27 Jul, 2008

1 commit


12 Jul, 2008

2 commits

  • Miscellaneous Fixes:
    - Fix bug in mbox sysfs interface that locked in EAGAIN if discovery stalled.
    - Fix missing error message when npiv and loop are true when link up occurs.
    - Fix panic in lpfc_scsi_cmd_iocb_cmpl: scsi_buf was NULL, but created
    race conditions with other code paths.
    - Fix error in sysfs mailbox structure that didn't rezero on next use.
    - Add missing mempool_free() to attachment failure path
    - Fix missing put of ndlp structure during driver unload.
    - Fix applications unable to send mailbox commands during discovery.
    - Remove unused argument (type) from function lpfc_post_buffer() API
    - Fix vport name is not shown after hbacmd vportcreate.
    - Remove repeated code statements.

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

    James Smart
     
  • Rework of the worker thread to make it more efficient.
    Make a finer-grain notfication of pending work so less time is
    spent checking conditions. Also made other general cleanups.

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

    James Smart
     

10 Apr, 2008

3 commits

  • Miscellaneous Fixes
    - Allow WRITE_VPARAM command when the virtual port is in a stopped state
    - Fixed handling of our queue depth max that was unconditionally raising
    the depth on all vports, rather than just the vport affected.
    - Fix race in interrupt handler for mailbox processing that did not take
    out the host lock.
    - Removed unused functions: find_node, findnode_rpi, and fabric_abort_flogi
    - Correct misspelled word unsolicited in message 0146
    - Correct HW-error 5 handling - it should not reset the adapter
    - Correct handling of IOCBs, which did not null out our pCmd field before
    invoking the midlayer io done function.
    - Changed our maximum supported target id to 4096

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

    James Smart
     
  • PCI Parity and EEH handling Fixes:
    - Under a PCI Data Parity Error, remove a completion routine callback that
    was on a command that we had already failed and released.
    - Under PCI parity error, we were not reinstalling the interrupt handler
    in the slot_reset callback, so we never became functional again.

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

    James Smart
     
  • 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
     

23 Feb, 2008

1 commit

  • Commit 3163f725a5d071eea1830bbbfab78cfe3fc9baaf introduced locking in
    lpfc_sli_hbqbuf_fill_hbqs, but missed unlocking on one exit.

    Reported-by: Harvey Harrison
    Signed-off-by: Matthew Wilcox
    Acked-by: James Smart
    Signed-off-by: James Bottomley

    Matthew Wilcox
     

12 Feb, 2008

3 commits

  • Fix buffer leaks:
    - HBQ dma buffer leak at dma_pool_destroy when unloading driver
    - Fix missing buffer free in slow ring buffer handling

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

    James Smart
     
  • Miscellaneous discovery fixes:
    - Flush RSCN buffers on vports when reseting HBA.
    - Fix incorrect FLOGI after vport reg failed
    - Fix a potential fabric ELS race condition
    - Fix handling of failed PLOGI command under high lip rates
    - Fix FDISC handling
    - Fix debug logging for npiv handling

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

    James Smart
     
  • 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
     

24 Jan, 2008

5 commits

  • Rework misplaced reference taking on node structure

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

    James Smart
     
  • Fix Drivers Unsolicited CT command handling - we did not handle multiframe
    sequences well.
    Fix error due to delay in replenishing buffers for unsolicited data.

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

    James Smart
     
  • Miscellaneous Fixes:
    - Fix a couple of sparse complaints
    - Reset the FCP recovery flag when the node is not a FCP2 device.
    - Speed up offline prep delays
    - Fixed a memory leak in lpfc_mem_alloc failure path
    - Fixed external loopback test.
    - Fixed error code returned from the driver when HBA is over heated.
    - Correct Max NPIV vport to limits read from adapter
    - Add missing locks around fc_flag and FC_NEEDS_REG_VPI
    - Add missing hba ids for device identification
    - Added support for SET_VARIABLE and MBX_WRITE_WWN mailbox commands
    - Changed all temperature event messages from warning to error
    - Fix reporting of link speed when link is down
    - Added support for MBX_WRITE_WWN mailbox command
    - Change del_timer_sync() in ISR to del_timer() in interrupt handler
    - Correct instances of beXX_to_cpu() that should be cpu_to_beXX()
    - Perform target flush before releasing node references on module unload
    - Avoid bogus devloss_tmo messages when driver unloads
    - Fix panic when HBA generates ERATT interupt
    - Fix mbox race condition and a workaround on back-to-back mailbox commands
    - Force NPIV off for pt2pt mode between 2 NPorts
    - Stop worker thread before removing fc_host.
    - Fix up discovery timeout error case due to missing clear_la
    - Tighten mailbox polling code to speed up detection of fast completions
    - Only allow DUMP_MEMORY if adapter offline due to overtemp errors
    - Added extended error information to the log messages in chip init.

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

    James Smart
     
  • Add parameters to enable and disable heartbeat and hba resets

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

    James Smart
     
  • Miscellaneous Discovery/ELS Fixes:
    - Delay free's of ELS requests if adapter reject conditions
    - Fix concurrent PLOGI vs ADISC state handling
    - Add retry mechanism for GFF_ID
    - Correct some illegal state transitions around RSCN timeouts
    - Fix missing return in FAN handling

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

    James Smart
     

12 Jan, 2008

6 commits

  • This patch contains the following minor cleanups:
    - make the following needlessly global functions static:
    - lpfc_els.c: lpfc_register_new_vport()
    - lpfc_els.c: lpfc_issue_els_fdisc()
    - lpfc_els.c: lpfc_issue_fabric_iocb()
    - lpfc_els.c: lpfc_fabric_abort_vport()
    - lpfc_hbadisc.c: lpfc_dev_loss_tmo_handler()
    - lpfc_hbadisc.c: lpfc_mbx_cmpl_clear_la()
    - lpfc_hbadisc.c: lpfc_disc_flush_list()
    - lpfc_hbadisc.c: __lpfc_find_node()
    - lpfc_init.c: lpfc_hb_timeout()
    - lpfc_init.c: lpfc_block_mgmt_io()
    - lpfc_sli.c: __lpfc_sli_release_iocbq()
    - lpfc_sli.c: lpfc_sli_next_hbq_slot()
    - lpfc_sli.c: lpfc_sli_hbqbuf_init_hbqs()
    - lpfc_sli.c: lpfc_sli_hbqbuf_find()
    - lpfc_sli.c: __lpfc_sli_issue_iocb()
    - #if 0 the following unused global functions:
    - lpfc_els.c: lpfc_fabric_abort_flogi()
    - lpfc_hbadisc.c: lpfc_find_node()
    - lpfc_hbadisc.c: lpfc_findnode_rpi()
    - remove the unused exports

    Signed-off-by: Adrian Bunk
    Acked-by: James Smart
    Signed-off-by: James Bottomley

    Adrian Bunk
     
  • Internal loopback fixes:
    - Use HBQs rather than Q_RING_BUFF
    - Correct HBQs continuation entries
    - Update CT handler to SLI3 iocbs

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

    James Smart
     
  • 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
     
  • 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
     
  • Added support for ASICs that report temperature. Temperature notices are
    reported as events and logged. Temperature can be read via sysfs.

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

    James Smart
     

19 Oct, 2007

1 commit

  • Found these while looking at printk uses.

    Add missing newlines to dev_ uses
    Add missing KERN_ prefixes to multiline dev_s
    Fixed a wierd->weird spelling typo
    Added a newline to a printk

    Signed-off-by: Joe Perches
    Cc: "Luck, Tony"
    Cc: Jens Axboe
    Cc: Mark M. Hoffman
    Cc: Roland Dreier
    Cc: Tilman Schmidt
    Cc: David Woodhouse
    Cc: Jeff Garzik
    Cc: Stephen Hemminger
    Cc: Greg KH
    Cc: Jeremy Fitzhardinge
    Cc: Geert Uytterhoeven
    Cc: Alessandro Zummo
    Cc: David Brownell
    Cc: James Smart
    Cc: Andrew Vasquez
    Cc: "Antonino A. Daplas"
    Cc: Evgeniy Polyakov
    Cc: Russell King
    Cc: Jaroslav Kysela
    Cc: Takashi Iwai
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     

13 Oct, 2007

1 commit

  • The Coverity checker noticed that we may overrun a statically allocated
    array in drivers/scsi/lpfc/lpfc_sli.c::lpfc_sli_hbqbuf_find().

    The case is this; In 'struct lpfc_hba' we have

    #define LPFC_MAX_HBQS 4
    ...
    struct lpfc_hba {
    ...
    struct hbq_s hbqs[LPFC_MAX_HBQS];
    ...
    };

    But then in lpfc_sli_hbqbuf_find() we have this code

    hbqno = tag >> 16;
    if (hbqno > LPFC_MAX_HBQS)
    return NULL;

    if 'hbqno' ends up as exactely 4, then we won't return, and then this

    list_for_each_entry(d_buf, &phba->hbqs[hbqno].hbq_buffer_list, list) {

    will cause an overflow of the statically allocated array at index 4,
    since the valid indices are only 0-3.

    I propose this patch, that simply changes the 'hbqno > LPFC_MAX_HBQS'
    into 'hbqno >= LPFC_MAX_HBQS' as a possible fix.

    Signed-off-by: Jesper Juhl
    Acked-by: James Smart
    Signed-off-by: James Bottomley

    Jesper Juhl
     

02 Aug, 2007

5 commits

  • - Clean up all instances of mixed tab-space indentation
    - Clean up sparse build errors
    - Add appropriate static's

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

    James Smart
     
  • - 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
     
  • - Remove the "management_version" sysfs parameter (was unused)
    - Add HBQ information to lpfc debugfs
    - Change lpfc_npiv_enable name back to lpfc_enable_npiv (internal stds)
    - Remove "issue_lip" attribute from the vports transport template

    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
     
  • Error messages and debugfs updates:
    - Fix up GID_FT error messages
    - Enhance debugfs with slow_ring_trace, dumpslim and nodelist information
    - Add log type (and messages) for vport state changes
    - Enhance log messages when retries ELS fail

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

    James Smart
     

18 Jun, 2007

4 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
     
  • The driver is reorganized to separate the handling of the adapter from
    the handling of the FC port. Adapter handling includes submissions of
    command requests, receiving responses, and managing adapter resources.
    The FC port includes the discovery engine, login handling, and the
    mapping of a Scsi_Host on the "port". Although not a large functional
    change, as it touches core structures and functions, resulting in a
    large text delta.

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

    James Smart
     

06 May, 2007

8 commits