commit 1f953b0dbc2549318afcc0a70af5542dffbce34a
Author: Bhanu Prakash Gollapudi <bprakash@broadcom.com>
Date:   Mon Jan 28 11:43:03 2013 -0800

    libfcoe: Check for unusable FCFs before looking for conflicting FCFs
    
    When there are multiple FCFs in the fabric, and one of them becomes
    unavailable, the fabric name for the unavailable FCF becomes 0 along
    with FIP_FL_AVAIL getting reset. In this case, FCF selection logic does
    not select any FCF as it first checks for conflicting FCFs (since fabric
    name is 0, it fails the condition), instead of first checking if it is
    usable or not. Fix it by first checking if FCF is usable and skip that
    FCF, and go to the next one in the list to check if it can be selected.
    
    Signed-off-by: Bhanu Prakash Gollapudi <bprakash@broadcom.com>
    Signed-off-by: Robert Love <robert.w.love@intel.com>

commit a586069b0f56a700d6f6249a64cbc313dd4a97e0
Author: Krishna Mohan <krmohan@cisco.com>
Date:   Wed Feb 13 16:33:04 2013 -0800

    libfc: XenServer fails to mount root filesystem.
    
    schedule_delayed_work() is using msec instead of jiffies. On PLOGI
    reject from target, remote port retry is scheduled @ 20 sec instead
    of 2sec(FC_DEF_E_D_TOV).
    XenServer dom0 kernel is configured with CONFIG_HZ=100Hz
    
    Signed-off-by: Krishna Mohan <krmohan@cisco.com>
    Signed-off-by: Robert Love <robert.w.love@intel.com>

commit b2593cbe18c4f50c9acacd88860b051f567654d7
Author: Bhanu Prakash Gollapudi <bprakash@broadcom.com>
Date:   Mon Feb 4 23:00:20 2013 -0800

    libfcoe: Handle CVL while waiting to select an FCF
    
    When a CVL is received while we wait to select best FCF, we drop it
    without handling it. This causes initiator and the switch to go
    out-of-sync. Initiator proceeds selecting one of the FCFs and tries to
    send FIP FLOGI. However the switch may reject the FLOGI, as it has
    cleared its internal state, and expects the initiator to start FIP
    discovery protocol. Fix this condition by resetting the fcoe
    controller.
    
    Signed-off-by: Bhanu Prakash Gollapudi <bprakash@broadcom.com>
    Reviewed-by: Yi Zou <yi.zou@intel.com>
    Signed-off-by: Robert Love <robert.w.love@intel.com>

commit 94aa743a2af455ee3bd9fc3410dff82f6abf4522
Author: Neerav Parikh <Neerav.Parikh@intel.com>
Date:   Tue Jan 15 15:42:38 2013 -0800

    fcoe: Fix deadlock while deleting FCoE interface with NPIV ports
    
    This patch fixes following deadlock caused by destroying of
    an FCoE interface with active NPIV ports on that interface.
    
        Call Trace:
        [<ffffffff814b7e88>] schedule+0x64/0x66
        [<ffffffff814b6b4f>] schedule_timeout+0x36/0xe3
        [<ffffffff81070c55>] ? update_curr+0xd6/0x110
        [<ffffffff81071f6b>] ? hrtick_update+0x1b/0x4d
        [<ffffffff81072405>] ? dequeue_task_fair+0x1ca/0x1d9
        [<ffffffff8106a369>] ? need_resched+0x1e/0x28
        [<ffffffff814b7d14>] wait_for_common+0x9b/0xf1
        [<ffffffff8106e7be>] ? try_to_wake_up+0x1e0/0x1e0
        [<ffffffff814b7e22>] wait_for_completion+0x1d/0x1f
        [<ffffffff8105ae82>] flush_workqueue+0x116/0x2a1
        [<ffffffff8105b357>] drain_workqueue+0x66/0x14c
        [<ffffffff8105b8ef>] destroy_workqueue+0x1a/0xcf
        [<ffffffffa009211e>] fc_remove_host+0x154/0x17f [scsi_transport_fc]
        [<ffffffffa00edbb8>] fcoe_if_destroy+0x184/0x1c9 [fcoe]
        [<ffffffffa00edc28>] fcoe_destroy_work+0x2b/0x44 [fcoe]
        [<ffffffff8105a82a>] process_one_work+0x1a8/0x2a4
        [<ffffffffa00edbfd>] ? fcoe_if_destroy+0x1c9/0x1c9 [fcoe]
        [<ffffffff8105c396>] worker_thread+0x1db/0x268
        [<ffffffff810604a3>] ? wake_up_bit+0x2a/0x2a
        [<ffffffff8105c1bb>] ? manage_workers.clone.16+0x1f6/0x1f6
        [<ffffffff8105ffd6>] kthread+0x6f/0x77
        [<ffffffff814c0304>] kernel_thread_helper+0x4/0x10
        [<ffffffff8105ff67>] ? kthread_freezable_should_stop+0x4b/0x4b
    
        Call Trace:
        [<ffffffff814b7e88>] schedule+0x64/0x66
        [<ffffffff814b8041>] schedule_preempt_disabled+0xe/0x10
        [<ffffffff814b70a1>] __mutex_lock_common.clone.5+0x117/0x17a
        [<ffffffff814b7117>] __mutex_lock_slowpath+0x13/0x15
        [<ffffffff814b6f76>] mutex_lock+0x23/0x37
        [<ffffffff8125b890>] ? list_del+0x11/0x30
        [<ffffffffa00edc84>] fcoe_vport_destroy+0x43/0x5f [fcoe]
        [<ffffffffa009130a>] fc_vport_terminate+0x48/0x110 [scsi_transport_fc]
        [<ffffffffa00913ef>] fc_vport_sched_delete+0x1d/0x79 [scsi_transport_fc]
        [<ffffffff8105a82a>] process_one_work+0x1a8/0x2a4
        [<ffffffffa00913d2>] ? fc_vport_terminate+0x110/0x110 [scsi_transport_fc]
        [<ffffffff8105c396>] worker_thread+0x1db/0x268
        [<ffffffff8105c1bb>] ? manage_workers.clone.16+0x1f6/0x1f6
        [<ffffffff8105ffd6>] kthread+0x6f/0x77
        [<ffffffff814c0304>] kernel_thread_helper+0x4/0x10
        [<ffffffff8105ff67>] ? kthread_freezable_should_stop+0x4b/0x4b
        [<ffffffff814c0300>] ? gs_change+0x13/0x13
    
    A prior attempt to fix this issue is posted here:
    http://lists.open-fcoe.org/pipermail/devel/2012-October/012318.html
    or
    http://article.gmane.org/gmane.linux.scsi.open-fcoe.devel/11924
    
    Based on feedback and discussion with Neil Horman it seems that the above patch
    may have a case where the fcoe_vport_destroy() and fcoe_destroy_work() can
    race; hence that patch has been withdrawn with this patch that is trying to
    solve the same problem in a different way.
    
    In the current approach instead of removing the fcoe_config_mutex from the
    vport_delete callback function; I've chosen to delete all the NPIV ports first
    on a given root lport before continuing with the removal of the root lport.
    
    Signed-off-by: Neerav Parikh <Neerav.Parikh@intel.com>
    Tested-by: Marcus Dennis <marcusx.e.dennis@intel.com>
    Acked-by: Neil Horman <nhorman@tuxdriver.com>
    Signed-off-by: Robert Love <robert.w.love@intel.com>

commit f9184df3b99375964340c1a78e33f304bbf15f06
Author: Neil Horman <nhorman@tuxdriver.com>
Date:   Tue Jan 15 14:34:40 2013 -0500

    fcoe: close race on link speed detection in fcoe code
    
    When creating an fcoe interfce, we call fcoe_link_speed_update before we add the
    lports fcoe interface to the fc_hostlist.  Since network device events like
    NETDEV_CHANGE are only processed if an fcoe interface is found with an
    underlying netdev that matches the netdev of the event.  Since this processing
    in fcoe_device_notification is how link_speed changes get communicated to the
    libfc  code (via fcoe_link_speed_update), we have a race condition - if a
    NETDEV_CHANGE event is sent after the call to fcoe_link_speed_update in
    fcoe_netdev_config, but before we add the interface to the fc_hostlist, we will
    loose the event and attributes like /sys/class/fc_host/hostX/speed will not get
    updated properly.
    
    Fix this by moving the add to the fc_hostlist above the serialized call to
    fcoe_netdev_config, ensuring that we catch netdev envents before we make a
    direct call to fcoe_link_speed_update.
    
    Also use this opportunity to clean up access to the fc_hostlist a bit by
    creating a fcoe_hostlist_del accessor and replacing the cleanup in fcoe_exit to
    use it properly.
    
    Tested by myself successfully
    
    [ Comment over 80 chars broken into multi-line by Robert Love to
      satisfy checkpatch.pl ]
    
    Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
    Reviewed-by: Yi Zou <yi.zou@intel.com>
    Signed-off-by: Robert Love <robert.w.love@intel.com>

commit cf02820041668b14cbfa0fbd2bab45ac79bd6174
Author: David Howells <dhowells@redhat.com>
Date:   Wed Dec 19 16:07:25 2012 +0000

    UAPI: (Scripted) Disintegrate include/scsi/fc
    
    Signed-off-by: David Howells <dhowells@redhat.com>
    Acked-by: Arnd Bergmann <arnd@arndb.de>
    Acked-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: Michael Kerrisk <mtk.manpages@gmail.com>
    Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
    Acked-by: Dave Jones <davej@redhat.com>

commit 4f670ff8eb4cb3e9e6ae0c0c6976faa0a4503751
Author: Al Viro <viro@ZenIV.linux.org.uk>
Date:   Fri Dec 7 14:10:14 2012 +0000

    debris left by "[SCSI] libfcoe: Remove mutex_trylock/restart_syscall checks"
    
    	AFAICS, the situation for fcoe_transport_disable() seems to be
    the same as for fcoe_transport_enable().  IOW, shouldn't it have
    restart_syscall() removed as well?  I don't see any in-tree ->disable()
    instances that could return -ERESTARTSYS, anyway...
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Robert Love <robert.w.love@intel.com>

commit b8b3e697d15165090583bed850879b1f3b250db0
Author: Yi Zou <yi.zou@intel.com>
Date:   Thu Dec 6 06:24:59 2012 +0000

    bnx2fc: use fcoe_get_lesb/fcoe_ctlr_get_lesb() directly from libfcoe
    
    Drop the bnx2fc_xxx versions as they are basically the same.
    
    Signed-off-by: Yi Zou <yi.zou@intel.com>
    Cc: Bhanu Prakash Gollapudi <bprakash@broadcom.com>
    Tested-by: Marcus Dennis <marcusx.e.dennis@intel.com>
    Signed-off-by: Robert Love <robert.w.love@intel.com>

commit 0e0f9cd6a80dc883dab4c82c17edc1abe485cbd9
Author: Yi Zou <yi.zou@intel.com>
Date:   Thu Dec 6 06:24:44 2012 +0000

    bnx2fc: use fcoe_link_speed_update() from the exported symbol in libfcoe
    
    We have fcoe_link_speed_update() in libfcoe ready for use now, take out the
    bnx2fc version which is almost the same.
    
    Signed-off-by: Yi Zou <yi.zou@intel.com>
    Cc: Bhanu Prakash Gollapudi <bprakash@broadcom.com>
    Tested-by: Marcus Dennis <marcusx.e.dennis@intel.com>
    Signed-off-by: Robert Love <robert.w.love@intel.com>

commit c3d7909b865274ffa74fa2715c6663caa51a80e1
Author: Yi Zou <yi.zou@intel.com>
Date:   Thu Dec 6 06:24:29 2012 +0000

    bnx2fc: add support to get_netdev for bnx2f_interface
    
    Adds support to fcoe_port's newly added get_netdev fucntion pointer for bnx2fc.
    
    Signed-off-by: Yi Zou <yi.zou@intel.com>
    Cc: Bhanu Prakash Gollapudi <bprakash@broadcom.com>
    Tested-by: Marcus Dennis <marcusx.e.dennis@intel.com>
    Signed-off-by: Robert Love <robert.w.love@intel.com>

commit 57c2728fa806aff08703e5739620454d723bc865
Author: Yi Zou <yi.zou@intel.com>
Date:   Thu Dec 6 06:24:13 2012 +0000

    libfcoe, fcoe: consolidate the fcoe_ctlr_get_lesb/fcoe_get_lesb
    
    Similarly they can be moved into libfcoe instead of being private to fcoe now.
    Also add comments particularly on the term LESB to the corresponding function.
    
    Signed-off-by: Yi Zou <yi.zou@intel.com>
    Cc: Bhanu Prakash Gollapudi <bprakash@broadcom.com>
    Tested-by: Marcus Dennis <marcusx.e.dennis@intel.com>
    Signed-off-by: Robert Love <robert.w.love@intel.com>

commit 03702689fcc985e9cb45b57099ebd5066f674739
Author: Yi Zou <yi.zou@intel.com>
Date:   Thu Dec 6 06:23:58 2012 +0000

    libfcoe, fcoe: move fcoe_link_speed_update() to libfcoe and export it
    
    With the previous patch, fcoe_link_speed_update() can be moved into libfcoe and
    exported to used by fcoe, bnx2fc, and etc.
    
    Signed-off-by: Yi Zou <yi.zou@intel.com>
    Cc: Bhanu Prakash Gollapudi <bprakash@broadcom.com>
    Tested-by: Marcus Dennis <marcusx.e.dennis@intel.com>
    Signed-off-by: Robert Love <robert.w.love@intel.com>

commit 66524ec9d0aeaa8bc59077c7c5f78d09ec9eeb9d
Author: Yi Zou <yi.zou@intel.com>
Date:   Thu Dec 6 06:23:43 2012 +0000

    fcoe: add support to the get_netdev() for fcoe_interface
    
    Adds support to fcoe_port's newly added get_netdev fucntion pointer.
    
    Signed-off-by: Yi Zou <yi.zou@intel.com>
    Cc: Bhanu Prakash Gollapudi <bprakash@broadcom.com>
    Tested-by: Marcus Dennis <marcusx.e.dennis@intel.com>
    Signed-off-by: Robert Love <robert.w.love@intel.com>

commit 8106fb4790c33547a034db53f7658bccd3cfbf6b
Author: Yi Zou <yi.zou@intel.com>
Date:   Thu Dec 6 06:23:27 2012 +0000

    fcoe: prep work to start consolidate the usage of fcoe_netdev
    
    Currently, in the default kernel fcoe driver, it is needed to get to the underlying
    private per fcoe transport's private structure, e.g., fcoe_interface in
    fcoe.ko, and returns the associated netdev. The similar logic exists in other
    fcoe drivers, e.g., bnx2fc, so we add a function pointer into the common
    fcoe_port struct to allow individual fcoe transport implementaion (fcoe
    and bnx2fc) to get the corresponding netdev associated with a give lport.
    
    Then a inline fcoe_get_netdev() is added as part of libfcoe for all underlying
    fcoe transport drivers to use regardless of its individual fcoe transport
    driver, and also allows move more common code such as fcoe_link_speed_update or
    fcoe_ctlr_get_lesb to be in libfcoe, rather than specific to fcoe.
    
    This patch is a prep work that adds aforementioned fucntion pointer, and
    followed by the actual code changes to make use of it.
    
    Signed-off-by: Yi Zou <yi.zou@intel.com>
    Cc: Bhanu Prakash Gollapudi <bprakash@broadcom.com>
    Tested-by: Marcus Dennis <marcusx.e.dennis@intel.com>
    Signed-off-by: Robert Love <robert.w.love@intel.com>

commit 8e6c5363dc52afbc60011c2c079bf4c4d26b1272
Author: Robert Love <robert.w.love@intel.com>
Date:   Tue Dec 4 02:14:53 2012 +0000

    libfc, libfcoe, fcoe: Convert debug_logging macros to pr_info
    
    Convert libfc, libfcoe and fcoe's debug_logging macros
    to use pr_info() instead of printk(KERN_INFO, ...). checkpatch.pl
    now complains about this, so convert libfcoe to preferred
    method.
    
    Signed-off-by: Robert Love <robert.w.love@intel.com>
    Tested-by: Marcus Dennis <marcusx.e.dennis@intel.com>

commit 6e89ea3f1032d5c762f1ae9b0bd2039794596813
Author: Robert Love <robert.w.love@intel.com>
Date:   Tue Nov 27 06:53:40 2012 +0000

    bnx2fc: Use the fcoe_sysfs control interface
    
    This patch adds support for the new fcoe_sysfs
    control interface to bnx2fc.ko. It keeps the deprecated
    interface in tact and therefore either the legacy
    or the new control interfaces can be used. A mixed mode
    is not supported. A user must either use the new
    interfaces or the old ones, but not both.
    
    The fcoe_ctlr's link state is now driven by both the
    netdev link state as well as the fcoe_ctlr_device's
    enabled attribute. The link must be up and the
    fcoe_ctlr_device must be enabled before the FCoE
    Controller starts discovery or login.
    
    Signed-off-by: Robert Love <robert.w.love@intel.com>
    Acked-by: Neil Horman <nhorman@tuxdriver.com>

commit 435c86679a24ead623c8a47ca31038e250a75e05
Author: Robert Love <robert.w.love@intel.com>
Date:   Tue Nov 27 06:53:35 2012 +0000

    fcoe: Use the fcoe_sysfs control interface
    
    This patch adds support for the new fcoe_sysfs
    control interface to fcoe.ko. It keeps the deprecated
    interface in tact and therefore either the legacy
    or the new control interfaces can be used. A mixed mode
    is not supported. A user must either use the new
    interfaces or the old ones, but not both.
    
    The fcoe_ctlr's link state is now driven by both the
    netdev link state as well as the fcoe_ctlr_device's
    enabled attribute. The link must be up and the
    fcoe_ctlr_device must be enabled before the FCoE
    Controller starts discovery or login.
    
    Signed-off-by: Robert Love <robert.w.love@intel.com>
    Acked-by: Neil Horman <nhorman@tuxdriver.com>

commit 6a891b071b640e1de44c4a5117fa2c974dcfa84a
Author: Robert Love <robert.w.love@intel.com>
Date:   Tue Nov 27 06:53:30 2012 +0000

    libfcoe, fcoe, bnx2fc: Add new fcoe control interface
    
    This patch does a few things.
    
    1) Makes /sys/bus/fcoe/ctlr_{create,destroy} interfaces.
       These interfaces take an <ifname> and will either
       create an FCoE Controller or destroy an FCoE
       Controller depending on which file is written to.
    
       The new FCoE Controller will start in a DISABLED
       state and will not do discovery or login until it
       is ENABLED. This pause will allow us to configure
       the FCoE Controller before enabling it.
    
    2) Makes the 'mode' attribute of a fcoe_ctlr_device
       writale. This allows the user to configure the mode
       in which the FCoE Controller will start in when it
       is ENABLED.
    
       Possible modes are 'Fabric', or 'VN2VN'.
    
       The default mode for a fcoe_ctlr{,_device} is 'Fabric'.
       Drivers must implement the set_fcoe_ctlr_mode routine
       to support this feature.
    
       libfcoe offers an exported routine to set a FCoE
       Controller's mode. The mode can only be changed
       when the FCoE Controller is DISABLED.
    
       This patch also removes the get_fcoe_ctlr_mode pointer
       in the fcoe_sysfs function template, the code in
       fcoe_ctlr.c to get the mode and the assignment of
       the fcoe_sysfs function pointer to the fcoe_ctlr.c
       implementation (in fcoe and bnx2fc). fcoe_sysfs can
       return that value for the mode without consulting the
       LLD.
    
    3) Make a 'enabled' attribute of a fcoe_ctlr_device. On a
       read, fcoe_sysfs will return the attribute's value. On
       a write, fcoe_sysfs will call the LLD (if there is a
       callback) to notifiy that the enalbed state has changed.
    
    This patch maintains the old FCoE control interfaces as
    module parameters, but it adds comments pointing out that
    the old interfaces are deprecated.
    
    Signed-off-by: Robert Love <robert.w.love@intel.com>
    Acked-by: Neil Horman <nhorman@tuxdriver.com>

commit 3993de6183885a099163b9562a2ea9c07b994a0e
Author: Robert Love <robert.w.love@intel.com>
Date:   Tue Nov 27 06:53:24 2012 +0000

    libfcoe: Add fcoe_sysfs debug logging level
    
    Add a macro to print fcoe_sysfs debug statements.
    
    Signed-off-by: Robert Love <robert.w.love@intel.com>
    Acked-by: Neil Horman <nhorman@tuxdriver.com>

commit ef60f674344cdb6d1da199f6b8d7d7016813cc6f
Author: Robert Love <robert.w.love@intel.com>
Date:   Tue Nov 27 06:53:19 2012 +0000

    libfcoe: Save some memory and optimize name lookups
    
    Instead of creating a structure with an enum and a pointer
    to a string, simply allocate an array of strings and use
    the enum values for the indicies.
    
    This means that we do not need to iterate through the list
    of entries when looking up a string name by its enum key.
    
    This will also help with a latter patch that will add
    more fcoe_sysfs attributes that will also use the
    fcoe_enum_name_search macro. One attribute will also do
    a reverse lookup which requires less code when the
    enum-to-string mappings are organized as this patch makes
    them to be.
    
    Signed-off-by: Robert Love <robert.w.love@intel.com>
    Acked-by: Neil Horman <nhorman@tuxdriver.com>

commit 354d1123c16942b8a3ca9131b8fc2f8c06e2ed7f
Author: Robert Love <robert.w.love@intel.com>
Date:   Tue Oct 30 01:55:46 2012 +0000

    Documentation: Add missing devices/ to devices path
    
    Add missing 'devices/ subdirectory to /sys/bus/fcoe/devices/ctlr_X
    and /sys/bus/fcoe/devices/fcf_X references.
    
    Signed-off-by: Robert Love <robert.w.love@intel.com>
    Tested-by: Ross Brattain <ross.b.brattain@intel.com>

commit 5b97fabdc815b4b60bac2328b58c5c7274debf58
Author: Vasu Dev <vasu.dev@intel.com>
Date:   Tue Oct 9 01:43:24 2012 +0000

    libfc: fix REC handling
    
    Currently fc_fcp_timeout doesn't check FC_RP_FLAGS_REC_SUPPORTED
    flag first, this prevents REC request ever going out at all
    to the target having REC support. So this patches fixes the
    fc_fcp_timeout by checking FC_RP_FLAGS_REC_SUPPORTED flag first.
    
    The changed order won't cause any issue during clearing
    FC_RP_FLAGS_REC_SUPPORTED on failed IO with target not supporting
    FC_RP_FLAGS_REC_SUPPORTED, since retry on failed IO would succeed.
    
    Signed-off-by: Vasu Dev <vasu.dev@intel.com>
    Tested-by: Ross Brattain <ross.b.brattain@intel.com>
    Signed-off-by: Robert Love <robert.w.love@intel.com>