15 Dec, 2011

1 commit


14 Dec, 2011

1 commit


31 Oct, 2011

1 commit

  • Adds more cases to do flogi retry, now also retry
    on getting bad response due to either no ELS response
    or flogi response payload length not large enough.
    In those cases flogi was not retried and that
    was leaving lport offline.

    Signed-off-by: Vasu Dev
    Tested-by: Bhanu Prakash Gollapudi
    Signed-off-by: Yi Zou
    Signed-off-by: James Bottomley

    Vasu Dev
     

29 Oct, 2011

1 commit

  • * git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (204 commits)
    [SCSI] qla4xxx: export address/port of connection (fix udev disk names)
    [SCSI] ipr: Fix BUG on adapter dump timeout
    [SCSI] megaraid_sas: Fix instance access in megasas_reset_timer
    [SCSI] hpsa: change confusing message to be more clear
    [SCSI] iscsi class: fix vlan configuration
    [SCSI] qla4xxx: fix data alignment and use nl helpers
    [SCSI] iscsi class: fix link local mispelling
    [SCSI] iscsi class: Replace iscsi_get_next_target_id with IDA
    [SCSI] aacraid: use lower snprintf() limit
    [SCSI] lpfc 8.3.27: Change driver version to 8.3.27
    [SCSI] lpfc 8.3.27: T10 additions for SLI4
    [SCSI] lpfc 8.3.27: Fix queue allocation failure recovery
    [SCSI] lpfc 8.3.27: Change algorithm for getting physical port name
    [SCSI] lpfc 8.3.27: Changed worst case mailbox timeout
    [SCSI] lpfc 8.3.27: Miscellanous logic and interface fixes
    [SCSI] megaraid_sas: Changelog and version update
    [SCSI] megaraid_sas: Add driver workaround for PERC5/1068 kdump kernel panic
    [SCSI] megaraid_sas: Add multiple MSI-X vector/multiple reply queue support
    [SCSI] megaraid_sas: Add support for MegaRAID 9360/9380 12GB/s controllers
    [SCSI] megaraid_sas: Clear FUSION_IN_RESET before enabling interrupts
    ...

    Linus Torvalds
     

25 Oct, 2011

1 commit

  • * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next: (1745 commits)
    dp83640: free packet queues on remove
    dp83640: use proper function to free transmit time stamping packets
    ipv6: Do not use routes from locally generated RAs
    |PATCH net-next] tg3: add tx_dropped counter
    be2net: don't create multiple RX/TX rings in multi channel mode
    be2net: don't create multiple TXQs in BE2
    be2net: refactor VF setup/teardown code into be_vf_setup/clear()
    be2net: add vlan/rx-mode/flow-control config to be_setup()
    net_sched: cls_flow: use skb_header_pointer()
    ipv4: avoid useless call of the function check_peer_pmtu
    TCP: remove TCP_DEBUG
    net: Fix driver name for mdio-gpio.c
    ipv4: tcp: fix TOS value in ACK messages sent from TIME_WAIT
    rtnetlink: Add missing manual netlink notification in dev_change_net_namespaces
    ipv4: fix ipsec forward performance regression
    jme: fix irq storm after suspend/resume
    route: fix ICMP redirect validation
    net: hold sock reference while processing tx timestamps
    tcp: md5: add more const attributes
    Add ethtool -g support to virtio_net
    ...

    Fix up conflicts in:
    - drivers/net/Kconfig:
    The split-up generated a trivial conflict with removal of a
    stale reference to Documentation/networking/net-modules.txt.
    Remove it from the new location instead.
    - fs/sysfs/dir.c:
    Fairly nasty conflicts with the sysfs rb-tree usage, conflicting
    with Eric Biederman's changes for tagged directories.

    Linus Torvalds
     

19 Oct, 2011

1 commit

  • To ease skb->truesize sanitization, its better to be able to localize
    all references to skb frags size.

    Define accessors : skb_frag_size() to fetch frag size, and
    skb_frag_size_{set|add|sub}() to manipulate it.

    Signed-off-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Eric Dumazet
     

16 Oct, 2011

1 commit


03 Oct, 2011

3 commits

  • Currently fcoe_ddp_min doesn't have default value
    so by default not used, so setting up default value
    as 4k as this works better by avoiding overhead
    of programing DDP for small IOs.

    Signed-off-by: Vasu Dev
    Tested-by: Ross Brattain
    Signed-off-by: Yi Zou
    Signed-off-by: James Bottomley

    Vasu Dev
     
  • Use real dev in case it has HW vlan acceleration
    support since in this case the real dev would
    do needed vlan processing, this way unnecessary
    vlan layer processing avoided and it gives
    slightly better IOPS with 512B size IOs.

    Signed-off-by: Vasu Dev
    Tested-by: Ross Brattain
    Signed-off-by: Yi Zou
    Signed-off-by: James Bottomley

    Vasu Dev
     
  • Since fcoe_percpu_thread_create() creates percpu kthread, it makes sense
    to use kthread_create_on_node() to get proper NUMA affinity for kthread
    stack.

    Signed-off-by: Eric Dumazet
    Signed-off-by: Yi Zou
    Signed-off-by: James Bottomley

    Eric Dumazet
     

22 Sep, 2011

1 commit

  • Conflicts:
    MAINTAINERS
    drivers/net/Kconfig
    drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c
    drivers/net/ethernet/broadcom/tg3.c
    drivers/net/wireless/iwlwifi/iwl-pci.c
    drivers/net/wireless/iwlwifi/iwl-trans-tx-pcie.c
    drivers/net/wireless/rt2x00/rt2800usb.c
    drivers/net/wireless/wl12xx/main.c

    David S. Miller
     

16 Sep, 2011

1 commit

  • This patch does several things:
    - introduces __ethtool_get_settings which is called from ethtool code and
    from drivers as well. Put ASSERT_RTNL there.
    - dev_ethtool_get_settings() is replaced by __ethtool_get_settings()
    - changes calling in drivers so rtnl locking is respected. In
    iboe_get_rate was previously ->get_settings() called unlocked. This
    fixes it. Also prb_calc_retire_blk_tmo() in af_packet.c had the same
    problem. Also fixed by calling __dev_get_by_index() instead of
    dev_get_by_index() and holding rtnl_lock for both calls.
    - introduces rtnl_lock in bnx2fc_vport_create() and fcoe_vport_create()
    so bnx2fc_if_create() and fcoe_if_create() are called locked as they
    are from other places.
    - use __ethtool_get_settings() in bonding code

    Signed-off-by: Jiri Pirko

    v2->v3:
    -removed dev_ethtool_get_settings()
    -added ASSERT_RTNL into __ethtool_get_settings()
    -prb_calc_retire_blk_tmo - use __dev_get_by_index() and lock
    around it and __ethtool_get_settings() call
    v1->v2:
    add missing export_symbol
    Reviewed-by: Ben Hutchings [except FCoE bits]
    Acked-by: Ralf Baechle
    Signed-off-by: David S. Miller

    Jiri Pirko
     

15 Sep, 2011

2 commits


29 Aug, 2011

1 commit

  • The rtnl cannot be held durrng the fcoe_interface_put.
    If it is the last reference on the fcoe_interface the
    fcoe_ctlr_destroy will be called as a part of the
    cleanup, ultimately calling cancel_work_sync(&fip->recv_work);

    If we are processing a flogi response we will be in
    the recv_work context and we will lock the rtnl to
    add a new unicast MAC address. This is how the deadlock
    can occur.

    The fix is simply to move the rtnl_lock/unlock into
    fcoe_interface_cleanup so that it can be unlocked before
    fcoe_interface_put is called.

    Here is the lockdep report:

    Jul 21 11:26:35 bubba [ 223.870702]
    ul 21 11:26:35 bubba [ 223.870704] =======================================================
    Jul 21 11:26:35 bubba [ 223.871255] [ INFO: possible circular locking dependency detected ]
    Jul 21 11:26:35 bubba [ 223.871530] 3.0.0-rc7+ #1
    Jul 21 11:26:35 bubba [ 223.871797] -------------------------------------------------------
    Jul 21 11:26:35 bubba [ 223.872072] lockdeptest.sh/3464 is trying to acquire lock:
    Jul 21 11:26:35 bubba [ 223.872345] ((&fip->recv_work)
    Jul 21 11:26:35 bubba ){+.+.+.}
    Jul 21 11:26:35 bubba , at:
    Jul 21 11:26:35 bubba [] wait_on_work+0x0/0xbd
    Jul 21 11:26:35 bubba [ 223.873022]
    Jul 21 11:26:35 bubba [ 223.873023] but task is already holding lock:
    Jul 21 11:26:35 bubba [ 223.873555] (rtnl_mutex
    Jul 21 11:26:35 bubba ){+.+.+.}
    Jul 21 11:26:35 bubba , at:
    Jul 21 11:26:35 bubba [] rtnl_lock+0x12/0x14
    Jul 21 11:26:35 bubba [ 223.874229]
    Jul 21 11:26:35 bubba [ 223.874230] which lock already depends on the new lock.
    Jul 21 11:26:35 bubba [ 223.874231]
    Jul 21 11:26:35 bubba [ 223.875032]
    Jul 21 11:26:35 bubba [ 223.875033] the existing dependency chain (in reverse order) is:
    Jul 21 11:26:35 bubba [ 223.875573]
    Jul 21 11:26:35 bubba [ 223.875573] -> #1
    Jul 21 11:26:35 bubba (rtnl_mutex
    Jul 21 11:26:35 bubba ){+.+.+.}
    Jul 21 11:26:35 bubba :
    Jul 21 11:26:35 bubba [ 223.876301]
    Jul 21 11:26:35 bubba [] lock_acquire+0xd2/0xf7
    Jul 21 11:26:35 bubba [ 223.876645]
    Jul 21 11:26:35 bubba [] __mutex_lock_common+0x47/0x30d
    Jul 21 11:26:35 bubba [ 223.876991]
    Jul 21 11:26:35 bubba [] mutex_lock_nested+0x3b/0x40
    Jul 21 11:26:35 bubba [ 223.877334]
    Jul 21 11:26:35 bubba [] rtnl_lock+0x12/0x14
    Jul 21 11:26:35 bubba [ 223.877675]
    Jul 21 11:26:35 bubba [] fcoe_update_src_mac+0x2b/0x80 [fcoe]
    Jul 21 11:26:35 bubba [ 223.878022]
    Jul 21 11:26:35 bubba [] fcoe_flogi_resp+0x5e/0x79 [fcoe]
    Jul 21 11:26:35 bubba [ 223.878366]
    Jul 21 11:26:35 bubba [] fc_exch_recv+0x7f5/0x9da [libfc]
    Jul 21 11:26:35 bubba [ 223.878713]
    Jul 21 11:26:35 bubba [] fcoe_ctlr_recv_work+0x71f/0x10dc [libfcoe]
    Jul 21 11:26:35 bubba [ 223.879258]
    Jul 21 11:26:35 bubba [] process_one_work+0x1d7/0x347
    Jul 21 11:26:35 bubba [ 223.879601]
    Jul 21 11:26:35 bubba [] worker_thread+0xf8/0x17c
    Jul 21 11:26:35 bubba [ 223.879944]
    Jul 21 11:26:35 bubba [] kthread+0x7d/0x85
    Jul 21 11:26:35 bubba [ 223.880287]
    Jul 21 11:26:35 bubba [] kernel_thread_helper+0x4/0x10
    Jul 21 11:26:35 bubba [ 223.880634]
    Jul 21 11:26:35 bubba [ 223.880635] -> #0
    Jul 21 11:26:35 bubba ((&fip->recv_work)
    Jul 21 11:26:35 bubba ){+.+.+.}
    Jul 21 11:26:35 bubba :
    Jul 21 11:26:35 bubba [ 223.881357]
    Jul 21 11:26:35 bubba [] __lock_acquire+0xb1d/0xe2c
    Jul 21 11:26:35 bubba [ 223.881695]
    Jul 21 11:26:35 bubba [] lock_acquire+0xd2/0xf7
    Jul 21 11:26:35 bubba [ 223.882033]
    Jul 21 11:26:35 bubba [] wait_on_work+0x50/0xbd
    Jul 21 11:26:35 bubba [ 223.882378]
    Jul 21 11:26:35 bubba [] __cancel_work_timer+0xb6/0xf4
    Jul 21 11:26:35 bubba [ 223.882718]
    Jul 21 11:26:35 bubba [] cancel_work_sync+0xb/0xd
    Jul 21 11:26:35 bubba [ 223.883057]
    Jul 21 11:26:35 bubba [] fcoe_ctlr_destroy+0x1d/0x67 [libfcoe]
    Jul 21 11:26:35 bubba [ 223.883399]
    Jul 21 11:26:35 bubba [] fcoe_interface_release+0x21/0x45 [fcoe]
    Jul 21 11:26:35 bubba [ 223.883940]
    Jul 21 11:26:35 bubba [] kref_put+0x43/0x4d
    Jul 21 11:26:35 bubba [ 223.884280]
    Jul 21 11:26:35 bubba [] fcoe_interface_put+0x17/0x19 [fcoe]
    Jul 21 11:26:35 bubba [ 223.884624]
    Jul 21 11:26:35 bubba [] fcoe_interface_cleanup+0x188/0x193 [fcoe]
    Jul 21 11:26:35 bubba [ 223.885163]
    Jul 21 11:26:35 bubba [] fcoe_destroy+0x52/0x72 [fcoe]
    Jul 21 11:26:35 bubba [ 223.885502]
    Jul 21 11:26:35 bubba [] fcoe_transport_destroy+0xab/0x110 [libfcoe]
    Jul 21 11:26:35 bubba [ 223.886045]
    Jul 21 11:26:35 bubba [] param_attr_store+0x43/0x62
    Jul 21 11:26:35 bubba [ 223.886385]
    Jul 21 11:26:35 bubba [] module_attr_store+0x21/0x25
    Jul 21 11:26:35 bubba [ 223.886728]
    Jul 21 11:26:35 bubba [] sysfs_write_file+0x103/0x13f
    Jul 21 11:26:35 bubba [ 223.887068]
    Jul 21 11:26:35 bubba [] vfs_write+0xa7/0xfa
    Jul 21 11:26:35 bubba [ 223.887406]
    Jul 21 11:26:35 bubba [] sys_write+0x45/0x69
    Jul 21 11:26:35 bubba [ 223.887742]
    Jul 21 11:26:35 bubba [] system_call_fastpath+0x16/0x1b
    Jul 21 11:26:35 bubba [ 223.888083]
    Jul 21 11:26:35 bubba [ 223.888084] other info that might help us debug this:
    Jul 21 11:26:35 bubba [ 223.888085]
    Jul 21 11:26:35 bubba [ 223.888879] Possible unsafe locking scenario:
    Jul 21 11:26:35 bubba [ 223.888881]
    Jul 21 11:26:35 bubba [ 223.889411] CPU0 CPU1
    Jul 21 11:26:35 bubba [ 223.889683] ---- ----
    Jul 21 11:26:35 bubba [ 223.889955] lock(
    Jul 21 11:26:35 bubba rtnl_mutex
    Jul 21 11:26:35 bubba );
    Jul 21 11:26:35 bubba [ 223.890349] lock(
    Jul 21 11:26:35 bubba (&fip->recv_work)
    Jul 21 11:26:35 bubba );
    Jul 21 11:26:35 bubba [ 223.890751] lock(
    Jul 21 11:26:35 bubba rtnl_mutex
    Jul 21 11:26:35 bubba );
    Jul 21 11:26:35 bubba [ 223.891154] lock(
    Jul 21 11:26:35 bubba (&fip->recv_work)
    Jul 21 11:26:35 bubba );
    Jul 21 11:26:35 bubba [ 223.891549]
    Jul 21 11:26:35 bubba [ 223.891550] *** DEADLOCK ***
    Jul 21 11:26:35 bubba [ 223.891551]
    Jul 21 11:26:35 bubba [ 223.892347] 6 locks held by lockdeptest.sh/3464:
    Jul 21 11:26:35 bubba [ 223.892621] #0:
    Jul 21 11:26:35 bubba (&buffer->mutex
    Jul 21 11:26:35 bubba ){+.+.+.}
    Jul 21 11:26:35 bubba , at:
    Jul 21 11:26:35 bubba [] sysfs_write_file+0x37/0x13f
    Jul 21 11:26:35 bubba [ 223.893359] #1:
    Jul 21 11:26:35 bubba (s_active
    Jul 21 11:26:35 bubba ){++++.+}
    Jul 21 11:26:35 bubba , at:
    Jul 21 11:26:35 bubba [] sysfs_write_file+0xe2/0x13f
    Jul 21 11:26:35 bubba [ 223.894094] #2:
    Jul 21 11:26:35 bubba (param_lock
    Jul 21 11:26:35 bubba ){+.+.+.}
    Jul 21 11:26:35 bubba , at:
    Jul 21 11:26:35 bubba [] param_attr_store+0x36/0x62
    Jul 21 11:26:35 bubba [ 223.894835] #3:
    Jul 21 11:26:35 bubba (ft_mutex
    Jul 21 11:26:35 bubba ){+.+.+.}
    Jul 21 11:26:35 bubba , at:
    Jul 21 11:26:35 bubba [] fcoe_transport_destroy+0x1e/0x110 [libfcoe]
    Jul 21 11:26:35 bubba [ 223.895574] #4:
    Jul 21 11:26:35 bubba (fcoe_config_mutex
    Jul 21 11:26:35 bubba ){+.+.+.}
    Jul 21 11:26:35 bubba , at:
    Jul 21 11:26:35 bubba [] fcoe_destroy+0x18/0x72 [fcoe]
    Jul 21 11:26:35 bubba [ 223.896314] #5:
    Jul 21 11:26:35 bubba (rtnl_mutex
    Jul 21 11:26:35 bubba ){+.+.+.}
    Jul 21 11:26:35 bubba , at:
    Jul 21 11:26:35 bubba [] rtnl_lock+0x12/0x14
    Jul 21 11:26:35 bubba [ 223.897047]
    Jul 21 11:26:35 bubba [ 223.897048] stack backtrace:
    Jul 21 11:26:35 bubba [ 223.897578] Pid: 3464, comm: lockdeptest.sh Not tainted 3.0.0-rc7+ #1
    Jul 21 11:26:35 bubba [ 223.897853] Call Trace:
    Jul 21 11:26:35 bubba [ 223.898128] [] print_circular_bug+0x1f8/0x209
    Jul 21 11:26:35 bubba [ 223.898416] [] __lock_acquire+0xb1d/0xe2c
    Jul 21 11:26:35 bubba [ 223.898699] [] ? wait_on_cpu_work+0xe6/0xe6
    Jul 21 11:26:35 bubba [ 223.898982] [] lock_acquire+0xd2/0xf7
    Jul 21 11:26:35 bubba [ 223.899263] [] ? wait_on_cpu_work+0xe6/0xe6
    Jul 21 11:26:35 bubba [ 223.899547] [] ? mod_timer+0x8f/0x98
    Jul 21 11:26:35 bubba [ 223.899827] [] wait_on_work+0x50/0xbd
    Jul 21 11:26:35 bubba [ 223.900108] [] ? wait_on_cpu_work+0xe6/0xe6
    Jul 21 11:26:35 bubba [ 223.900390] [] __cancel_work_timer+0xb6/0xf4
    Jul 21 11:26:35 bubba [ 223.900671] [] cancel_work_sync+0xb/0xd
    Jul 21 11:26:35 bubba [ 223.900953] [] fcoe_ctlr_destroy+0x1d/0x67 [libfcoe]
    Jul 21 11:26:35 bubba [ 223.901237] [] fcoe_interface_release+0x21/0x45 [fcoe]
    Jul 21 11:26:35 bubba [ 223.901522] [] ? fcoe_enable+0x6b/0x6b [fcoe]
    Jul 21 11:26:35 bubba [ 223.901803] [] kref_put+0x43/0x4d
    Jul 21 11:26:35 bubba [ 223.902083] [] fcoe_interface_put+0x17/0x19 [fcoe]
    Jul 21 11:26:35 bubba [ 223.902367] [] fcoe_interface_cleanup+0x188/0x193 [fcoe]
    Jul 21 11:26:35 bubba [ 223.902653] [] ? mutex_lock_nested+0x3b/0x40
    Jul 21 11:26:35 bubba [ 223.902939] [] fcoe_destroy+0x52/0x72 [fcoe]
    Jul 21 11:26:35 bubba [ 223.903223] [] fcoe_transport_destroy+0xab/0x110 [libfcoe]
    Jul 21 11:26:35 bubba [ 223.903508] [] param_attr_store+0x43/0x62
    Jul 21 11:26:35 bubba [ 223.903792] [] module_attr_store+0x21/0x25
    Jul 21 11:26:35 bubba [ 223.904075] [] sysfs_write_file+0x103/0x13f
    Jul 21 11:26:35 bubba [ 223.904357] [] vfs_write+0xa7/0xfa
    Jul 21 11:26:35 bubba [ 223.904642] [] ? fget_light+0x35/0x96
    Jul 21 11:26:35 bubba [ 223.904923] [] sys_write+0x45/0x69
    Jul 21 11:26:35 bubba [ 223.905204] [] system_call_fastpath+0x16/0x1b
    Jul 21 11:26:36 bubba [ 223.964438] ixgbe 0000:05:00.0: eth3: detected SFP+: 5
    Jul 21 11:26:37 bubba [ 225.196702] ixgbe 0000:05:00.0: eth3: NIC Link is Up 10 Gbps, Flow Control: None

    Signed-off-by: Robert Love
    Tested-by: Ross Brattain
    Reviewed-by: Yi Zou
    Signed-off-by: James Bottomley

    Robert Love
     

27 Aug, 2011

2 commits


28 Jul, 2011

4 commits

  • Cleanup to:

    - have selection for all types of frames, not just FCP.
    - remove redundant cpu_online check once fcoe_select_cpu called
    as this is not required since later code flow check for offlined
    cpu.
    - Simplify fcoe_select_cpu() by removing unnecessary checks to
    skip curr_cpu, this also fixes possibly infinite loop in case
    of curr_cpu is the only cpu while iterating in the loop.

    This cleanup mainly applies to target as incoming request are
    mostly for target, therefore Kiran has verified the patch
    with target also.

    Signed-off-by: Vasu Dev
    Tested-by: Kiran Patil
    Tested-by: Ross Brattain
    Signed-off-by: Robert Love
    Signed-off-by: James Bottomley

    Vasu Dev
     
  • Use pending queue to retry FIP frame in case its tx
    fails and use common pending queue for both fcoe
    and fip frames using fcoe_port_send.

    Signed-off-by: Vasu Dev
    Tested-by: Ross Brattain
    Signed-off-by: Robert Love
    Signed-off-by: James Bottomley

    Vasu Dev
     
  • Drop the rx frame having xid with wrong cpu info
    or received with xid not matching to our xid.

    Not dropping such frame is causing panic as
    that causes accessing data struct beyond their
    bounds.

    Signed-off-by: Vasu Dev
    Tested-by: Ross Brattain
    Signed-off-by: Robert Love
    Signed-off-by: James Bottomley

    Vasu Dev
     
  • There is no need to cache the ptype in fcoe_rcv_info struct as it is never
    used anywhere.

    Signed-off-by: Yi Zou
    Tested-by: Ross Brattain
    Signed-off-by: Robert Love
    Signed-off-by: James Bottomley

    Yi Zou
     

30 Jun, 2011

5 commits

  • When NPIV port destroy handler is called it does not do all the cleanup
    required for the given NPIV port. This was happening as some of the
    lport cleanup moved to fcoe_interface_cleanup() routine, which is not
    called as part of the vport delete process.

    This patch rearranges the sequence in which the fcoe_if_destory() and
    fcoe_interface_cleanup() functions are being called from various places
    in the code. It now matches the sequence they are constructed during the
    create process for both N_Port as well as NPIV port.

    Tested-by: Ross Brattain
    Signed-off-by: Neerav Parikh
    Signed-off-by: Robert Love
    Signed-off-by: James Bottomley

    Neerav Parikh
     
  • …processing of incoming request for FCoE target

    Problem: Selection of RX queue on target is based on RX-ID. FCoE used
    8 Net Rx queues. HW post the packets based on rx_id %
    num_rx_queue. Due to this has based filtering, only one CPU is busy
    servicing incoming request including post-processing of incoming
    request. This is gating factor because

    1. Only one CPU is utilized 100% while others CPUs are not used at all.

    2. CPU which received request assign "sequence' by selecting exchange
    from per CPU pool (num_ddp_context / num_online_cpus,
    approxi.). Due to which if if rate of incoming request is higher
    than rate of servicing request, existing code path end of sending
    "BUSY" response (SAM_STAT_BUSY because unable to allocate
    exchange).

    Fix: Fan-out incoming request to all other CPUs excluding the CPU
    which is receiving all incoiming request. This path also addresses,
    selecting same CPU based on rx_id from received frame for completion
    of the request such as "releasing exchange to the per CPU Pool". This
    fix is applicable for FCoE target since initiator code path already
    takes care of selecting CPU to complete post-processing of request
    once OX_ID is assigned.

    Notes: N/A

    Dependencines: N/A

    Signed-off-by: Kiran Patil <kiran.patil@intel.com>
    Signed-off-by: Robert Love <robert.w.love@intel.com>
    Signed-off-by: James Bottomley <JBottomley@Parallels.com>

    Kiran Patil
     
  • Problem: Earlier mechanism of selection of CPU was, to select the same CPU
    which has received incoming request. Hence in case of rx_id = 0xFFFF,
    request was always posted to same NetRx queue, hence only 1 CPU is utilized
    for handling the command. It was also causing problem of "running out of
    exchanges from per CPU pool of exchanges (in case of DDP offload)

    Fix: Implemented new algo. to select CPU for post-processing of
    incoming commands when rx_id is unknown. This is simple Round robin
    algo. for CPU selection.

    Notes/Dependencies: N/A

    Signed-off-by: Kiran Patil
    Signed-off-by: Robert Love
    Signed-off-by: James Bottomley

    Kiran Patil
     
  • Problem: When initiator sends write command to target, target tries to
    assign new sequence. It allocates new exchangeID (RX_ID)
    always from non-offloaded pool (Non-offload EMA)

    Fix: Enhanced fcoe_oem_match routine to look at F_CTL flags and if it
    is exchange responder and command type is WRITEDATA, then function
    returns TRUE instead of FALSE. This function is used to determine
    which pool to use (offload pool of exchange is used only if this
    function returns TRUE).

    Technical Notes: N/A

    Signed-off-by: Kiran Patil
    Signed-off-by: Robert Love
    Signed-off-by: James Bottomley

    Kiran Patil
     
  • Add ddp_target() support to the Open-FCoE sw fcoe hba driver (fcoe.ko).

    Signed-off-by: Yi Zou
    Signed-off-by: Kiran Patil
    Signed-off-by: Robert Love
    Signed-off-by: James Bottomley

    Yi Zou
     

25 May, 2011

3 commits

  • libfcoe's interface consists of create, destroy, enable,
    disable and create_vn2vn. These are currently module
    paramaters added durring the module initialization. A
    concern arose that the module parameters were being added
    with write permissions before the module had completed
    initialization. The following code was added to each
    sysfs store file.

    * Make sure the module has been initialized, and is not about to be
    * removed. Module parameter sysfs files are writable before the
    * module_init function is called and after module_exit.
    */
    if (THIS_MODULE->state != MODULE_STATE_LIVE)
    goto out_nodev;

    This check was called out as unhelpful as the module can
    go dead at any time and therefore its state isn't a reliable
    thing to look at as a sign of stability and initialization
    completion. Also, that functional interfaces like these
    should be added after module initialization.

    This patch removes the unnecessary checks and hopes to
    disprove the concern about initialization ordering.

    Recent fcoe transport rework changes now require fcoe
    transports to register with libfcoe before any operation
    can take place. libfcoe may access some static variables
    but nothing that could cause a problem. Once a fcoe transport
    is registered, libfcoe is usable and any interface calls will
    be functional.

    Signed-off-by: Robert Love
    Tested-by: Ross Brattain
    Signed-off-by: James Bottomley

    Robert Love
     
  • This patch adds a validation step before allowing creation of a new NPIV port.
    It checks whether the WWPN passed for the new NPIV port to be created is unique
    for the given physical port.

    Signed-off-by: Neerav Parikh
    Tested-by: Ross Brattain
    Signed-off-by: Robert Love
    Signed-off-by: James Bottomley

    Neerav Parikh
     
  • Host doesnt handle CVL to NPIV instantiated ports correctly.
    - As per FC-BB-5 Rev 2 CVLs with no VN_Port descriptors shall be treated as
    implicit logout of ALL vn_ports.
    - CVL for NPIV ports should be handled before physical port even if descriptor
    for physical port appears before NPIV ports

    Signed-off-by: Bhanu Prakash Gollapudi
    Signed-off-by: Robert Love
    Signed-off-by: James Bottomley

    Bhanu Prakash Gollapudi
     

21 May, 2011

1 commit

  • * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6: (1446 commits)
    macvlan: fix panic if lowerdev in a bond
    tg3: Add braces around 5906 workaround.
    tg3: Fix NETIF_F_LOOPBACK error
    macvlan: remove one synchronize_rcu() call
    networking: NET_CLS_ROUTE4 depends on INET
    irda: Fix error propagation in ircomm_lmp_connect_response()
    irda: Kill set but unused variable 'bytes' in irlan_check_command_param()
    irda: Kill set but unused variable 'clen' in ircomm_connect_indication()
    rxrpc: Fix set but unused variable 'usage' in rxrpc_get_transport()
    be2net: Kill set but unused variable 'req' in lancer_fw_download()
    irda: Kill set but unused vars 'saddr' and 'daddr' in irlan_provider_connect_indication()
    atl1c: atl1c_resume() is only used when CONFIG_PM_SLEEP is defined.
    rxrpc: Fix set but unused variable 'usage' in rxrpc_get_peer().
    rxrpc: Kill set but unused variable 'local' in rxrpc_UDP_error_handler()
    rxrpc: Kill set but unused variable 'sp' in rxrpc_process_connection()
    rxrpc: Kill set but unused variable 'sp' in rxrpc_rotate_tx_window()
    pkt_sched: Kill set but unused variable 'protocol' in tc_classify()
    isdn: capi: Use pr_debug() instead of ifdefs.
    tg3: Update version to 3.119
    tg3: Apply rx_discards fix to 5719/5720
    ...

    Fix up trivial conflicts in arch/x86/Kconfig and net/mac80211/agg-tx.c
    as per Davem.

    Linus Torvalds
     

01 May, 2011

8 commits

  • Currently fcoe interface cleanup is done after ndo_fcoe_disable
    and that prevents logoff going out to the peer, so this patch
    moves all netdev cleanup and its releasing inside
    fcoe_interface_cleanup to have log off before ndo_fcoe_disable
    disables the fcoe.

    This patch also fixes asymmetric rtnl locking around fcoe_if_destroy,
    as currently this function requires rtnl held by its caller
    and then have this func drops the lock, instead now don't have
    any processing under rtnl inside fcoe_if_destroy, this required
    moving few func to get build working again.

    Signed-off-by: Vasu Dev
    Signed-off-by: Robert Love
    Signed-off-by: James Bottomley

    Vasu Dev
     
  • fix typo of '_attach' -> '_detach' in the comment.

    Reported-by: Frank Zhang
    Signed-off-by: Yi Zou
    Tested-by: Ross Brattain
    Signed-off-by: Robert Love
    Signed-off-by: James Bottomley

    Yi Zou
     
  • possible buffer overflow in fcoe_transport_show when reaching the end of
    buffer and crossing PAGE_SIZE boundary.

    Signed-off-by: Yi Zou
    Signed-off-by: Tomas Henzl
    Tested-by: Ross Brattain
    Signed-off-by: Robert Love
    Signed-off-by: James Bottomley

    Yi Zou
     
  • When rmmoving the underlying fcoe transport driver module by force when
    it's attached and in use, the correspoding netdev mapping should be
    cleaned up properly as well, otherwise the lookup for a given netdev
    for the transport would still return non NULL pointer, causing "unable
    to handle paging request" bug.

    Signed-off-by: Yi Zou
    Tested-by: Ross Brattain
    Signed-off-by: Robert Love
    Signed-off-by: James Bottomley

    Yi Zou
     
  • Signed-off-by: Kirill A. Shutemov
    Signed-off-by: Robert Love
    Signed-off-by: James Bottomley

    Kirill A. Shutemov
     
  • The check of module state being MODULE_STATE_LIVE is no longer needed for the
    individual fcoe transport driver, e.g., fcoe.ko, as sysfs entries now go to
    libfcoe now, if it reaches fcoe.ko, it has to be already registered. The module
    state check for libfcoe will guard the possible race condition of sysfs being
    writable before module_init function is called and after module_exit.

    Signed-off-by: Yi Zou
    Tested-by: Ross Brattain
    Signed-off-by: Robert Love
    Signed-off-by: James Bottomley

    Yi Zou
     
  • These checks were initially added to avoid a lockdep
    false positive when dealing with the s_active, rtnl
    and fcoe_config_mutex mutexes. Recently the create,
    destroy, enable and disable sysfs entries were moved
    from fcoe.ko to libfcoe.ko. With this change the mutex
    usage was shuffled around and the lockdep false
    positive stopped happening. We can now remove these
    checks.

    Signed-off-by: Robert Love
    Tested-by: Ross Brattain
    Signed-off-by: James Bottomley

    Robert Love
     
  • This code was incorrectly ported from fcoe.c when the
    fcoe transport infrastructure was put into place. It
    was originally needed in fcoe.c when dealing with
    the rtnl mutex. In that code it was only needed to
    avoid a lockdep false positive. In libfcoe we don't
    deal with the rtnl mutex, we don't get the lockdep
    false positive and therefore we don't need these
    checks.

    Signed-off-by: Robert Love
    Tested-by: Ross Brattain
    Signed-off-by: James Bottomley

    Robert Love
     

30 Apr, 2011

1 commit

  • This makes sure that when a driver calls the ethtool's
    get/set_settings() callback of another driver, the data passed to it
    is clean. This guarantees that speed_hi will be zeroed correctly if
    the called callback doesn't explicitely set it: we are sure we don't
    get a corrupted speed from the underlying driver. We also take care of
    setting the cmd field appropriately (ETHTOOL_GSET/SSET).

    This applies to dev_ethtool_get_settings(), which now makes sure it
    sets up that ethtool command parameter correctly before passing it to
    drivers. This also means that whoever calls dev_ethtool_get_settings()
    does not have to clean the ethtool command parameter. This function
    also becomes an exported symbol instead of an inline.

    All drivers visible to make allyesconfig under x86_64 have been
    updated.

    Signed-off-by: David Decotigny
    Signed-off-by: David S. Miller

    David Decotigny
     

31 Mar, 2011

1 commit