08 Aug, 2010

1 commit

  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband: (42 commits)
    IB/qib: Add missing include
    IB/ehca: Drop unnecessary NULL test
    RDMA/nes: Fix confusing if statement indentation
    IB/ehca: Init irq tasklet before irq can happen
    RDMA/nes: Fix misindented code
    RDMA/nes: Fix showing wqm_quanta
    RDMA/nes: Get rid of "set but not used" variables
    RDMA/nes: Read firmware version from correct place
    IB/srp: Export req_lim via sysfs
    IB/srp: Make receive buffer handling more robust
    IB/srp: Use print_hex_dump()
    IB: Rename RAW_ETY to RAW_ETHERTYPE
    RDMA/nes: Fix two sparse warnings
    RDMA/cxgb3: Make needlessly global iwch_l2t_send() static
    IB/iser: Make needlessly global iser_alloc_rx_descriptors() static
    RDMA/cxgb4: Add timeouts when waiting for FW responses
    IB/qib: Fix race between qib_error_qp() and receive packet processing
    IB/qib: Limit the number of packets processed per interrupt
    IB/qib: Allow writes to the diag_counters to be able to clear them
    IB/qib: Set cfgctxts to number of CPUs by default
    ...

    Linus Torvalds
     

06 Aug, 2010

1 commit


05 Aug, 2010

5 commits

  • Export req_lim via sysfs for debugging.

    Signed-off-by: Bart Van Assche
    Acked-by: David Dillow
    Signed-off-by: Roland Dreier

    Bart Van Assche
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6: (1443 commits)
    phy/marvell: add 88ec048 support
    igb: Program MDICNFG register prior to PHY init
    e1000e: correct MAC-PHY interconnect register offset for 82579
    hso: Add new product ID
    can: Add driver for esd CAN-USB/2 device
    l2tp: fix export of header file for userspace
    can-raw: Fix skb_orphan_try handling
    Revert "net: remove zap_completion_queue"
    net: cleanup inclusion
    phy/marvell: add 88e1121 interface mode support
    u32: negative offset fix
    net: Fix a typo from "dev" to "ndev"
    igb: Use irq_synchronize per vector when using MSI-X
    ixgbevf: fix null pointer dereference due to filter being set for VLAN 0
    e1000e: Fix irq_synchronize in MSI-X case
    e1000e: register pm_qos request on hardware activation
    ip_fragment: fix subtracting PPPOE_SES_HLEN from mtu twice
    net: Add getsockopt support for TCP thin-streams
    cxgb4: update driver version
    cxgb4: add new PCI IDs
    ...

    Manually fix up conflicts in:
    - drivers/net/e1000e/netdev.c: due to pm_qos registration
    infrastructure changes
    - drivers/net/phy/marvell.c: conflict between adding 88ec048 support
    and cleaning up the IDs
    - drivers/net/wireless/ipw2x00/ipw2100.c: trivial ipw2100_pm_qos_req
    conflict (registration change vs marking it static)

    Linus Torvalds
     
  • The current strategy in ib_srp for posting receive buffers is:

    * Post one buffer after channel establishment.
    * Post one buffer before sending an SRP_CMD or SRP_TSK_MGMT to the target.

    As a result, only the first non-SRP_RSP information unit from the
    target will be processed. If that first information unit is an
    SRP_T_LOGOUT, it will be processed. On the other hand, if the
    initiator receives an SRP_CRED_REQ or SRP_AER_REQ before it receives a
    SRP_T_LOGOUT, the SRP_T_LOGOUT won't be processed.

    We can fix this inconsistency by changing the strategy for posting
    receive buffers to:

    * Post all receive buffers after channel establishment.
    * After a receive buffer has been consumed and processed, post it again.

    A side effect is that the ib_post_recv() call is moved out of the SCSI
    command processing path. Since __srp_post_recv() is not called
    directly any more, get rid of it and move the code directly into
    srp_post_recv(). Also, move srp_post_recv() up in the file to avoid a
    forward declaration.

    Signed-off-by: Bart Van Assche
    Acked-by: David Dillow
    Signed-off-by: Roland Dreier

    Bart Van Assche
     
  • Replace an open-coded dump of the receive buffer with a call to
    print_hex_dump().

    Signed-off-by: Bart Van Assche
    Signed-off-by: Roland Dreier

    Bart Van Assche
     
  • Signed-off-by: Or Gerlitz
    Signed-off-by: Roland Dreier

    Or Gerlitz
     

07 Jul, 2010

1 commit


05 Jul, 2010

1 commit

  • Following commit 1437ce3983bcbc0447a0dedcd644c14fe833d266 "ethtool:
    Change ethtool_op_set_flags to validate flags", ethtool_op_set_flags
    takes a third parameter and cannot be used directly as an
    implementation of ethtool_ops::set_flags.

    Changes nes and ipoib driver to pass in the appropriate value.

    Signed-off-by: Ben Hutchings
    Acked-by: Roland Dreier
    Signed-off-by: David S. Miller

    Ben Hutchings
     

21 May, 2010

1 commit

  • * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6: (1674 commits)
    qlcnic: adding co maintainer
    ixgbe: add support for active DA cables
    ixgbe: dcb, do not tag tc_prio_control frames
    ixgbe: fix ixgbe_tx_is_paused logic
    ixgbe: always enable vlan strip/insert when DCB is enabled
    ixgbe: remove some redundant code in setting FCoE FIP filter
    ixgbe: fix wrong offset to fc_frame_header in ixgbe_fcoe_ddp
    ixgbe: fix header len when unsplit packet overflows to data buffer
    ipv6: Never schedule DAD timer on dead address
    ipv6: Use POSTDAD state
    ipv6: Use state_lock to protect ifa state
    ipv6: Replace inet6_ifaddr->dead with state
    cxgb4: notify upper drivers if the device is already up when they load
    cxgb4: keep interrupts available when the ports are brought down
    cxgb4: fix initial addition of MAC address
    cnic: Return SPQ credit to bnx2x after ring setup and shutdown.
    cnic: Convert cnic_local_flags to atomic ops.
    can: Fix SJA1000 command register writes on SMP systems
    bridge: fix build for CONFIG_SYSFS disabled
    ARCNET: Limit com20020 PCI ID matches for SOHARD cards
    ...

    Fix up various conflicts with pcmcia tree drivers/net/
    {pcmcia/3c589_cs.c, wireless/orinoco/orinoco_cs.c and
    wireless/orinoco/spectrum_cs.c} and feature removal
    (Documentation/feature-removal-schedule.txt).

    Also fix a non-content conflict due to pm_qos_requirement getting
    renamed in the PM tree (now pm_qos_request) in net/mac80211/scan.c

    Linus Torvalds
     

16 May, 2010

1 commit


13 May, 2010

4 commits

  • We shouldn't free things here because we free them later.
    The call tree looks like this:
    iser_connect() ==> initiating the connection establishment
    and later
    iser_cma_handler() => iser_route_handler() => iser_create_ib_conn_res()
    if we fail here, eventually iser_conn_release() is called, resulting
    in a double free.

    Signed-off-by: Dan Carpenter
    Signed-off-by: Or Gerlitz
    Signed-off-by: Roland Dreier

    Dan Carpenter
     
  • The iser connection teardown flow isn't over until the underlying
    Connection Manager (e.g the IB CM) delivers a disconnected or timeout
    event through the RDMA-CM. When the remote (target) side isn't
    reachable, e.g when some HW e.g port/hca/switch isn't functioning or
    taken down administratively, the CM timeout flow is used and the event
    may be generated only after relatively long time -- on the order of
    tens of seconds.

    The current iser code exposes this possibly long delay to higher
    layers, specifically to the iscsid daemon and iscsi kernel stack. As a
    result, the iscsi stack doesn't respond well: this low-level CM delay
    is added to the fail-over time under HA schemes such as the one
    provided by DM multipath through the multipathd(8) service.

    This patch enhances the reference counting scheme on iser's IB
    connections so that the disconnect flow initiated by iscsid from user
    space (ep_disconnect) doesn't wait for the CM to deliver the
    disconnect/timeout event. (The connection teardown isn't done from
    iser's view point until the event is delivered)

    The iser ib (rdma) connection object is destroyed when its reference
    count reaches zero. When this happens on the RDMA-CM callback
    context, extra care is taken so that the RDMA-CM does the actual
    destroying of the associated ID, since doing it in the callback is
    prohibited.

    The reference count of iser ib connection normally reaches three,
    where the relations are

    1. conn
    2. conn
    3. cma id

    With this patch, multipath fail-over time is about 30 seconds, while
    without this patch, multipath fail-over time is about 130 seconds.

    Signed-off-by: Or Gerlitz
    Signed-off-by: Roland Dreier

    Or Gerlitz
     
  • The iscsi connection object life cycle includes binding and unbinding
    (conn_stop) to/from the iscsi transport connection object. Since
    iscsi connection objects are recycled, at the time the transport
    connection (e.g iser's IB connection) is released, it is not valid to
    touch the iscsi connection tied to the transport back-pointer since it
    may already point to a different transport connection.

    Signed-off-by: Or Gerlitz
    Signed-off-by: Roland Dreier

    Or Gerlitz
     
  • Add handler to handle events such as port up and down. This is useful
    when testing high-availability schemes such as multi-pathing.

    Signed-off-by: Or Gerlitz
    Signed-off-by: Roland Dreier

    Or Gerlitz
     

22 Apr, 2010

1 commit


12 Apr, 2010

1 commit


07 Apr, 2010

1 commit


04 Apr, 2010

1 commit

  • Converts the list and the core manipulating with it to be the same as uc_list.

    +uses two functions for adding/removing mc address (normal and "global"
    variant) instead of a function parameter.
    +removes dev_mcast.c completely.
    +exposes netdev_hw_addr_list_* macros along with __hw_addr_* functions for
    manipulation with lists on a sandbox (used in bonding and 80211 drivers)

    Signed-off-by: Jiri Pirko
    Signed-off-by: David S. Miller

    Jiri Pirko
     

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
     

23 Mar, 2010

1 commit

  • Finally this bit can be removed. Currently, after the bonding driver is
    changed/fixed (32a806c194ea112cfab00f558482dd97bee5e44e net-next-2.6),
    that's not possible for an addr with different length than dev->addr_len
    to be present in list. Removing this check as in new mc_list there will be
    no addrlen in the record.

    Signed-off-by: Jiri Pirko
    Signed-off-by: David S. Miller

    Jiri Pirko
     

19 Mar, 2010

1 commit

  • * git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (69 commits)
    [SCSI] scsi_transport_fc: Fix synchronization issue while deleting vport
    [SCSI] bfa: Update the driver version to 2.1.2.1.
    [SCSI] bfa: Remove unused header files and did some cleanup.
    [SCSI] bfa: Handle SCSI IO underrun case.
    [SCSI] bfa: FCS and include file changes.
    [SCSI] bfa: Modified the portstats get/clear logic
    [SCSI] bfa: Replace bfa_get_attr() with specific APIs
    [SCSI] bfa: New portlog entries for events (FIP/FLOGI/FDISC/LOGO).
    [SCSI] bfa: Rename pport to fcport in BFA FCS.
    [SCSI] bfa: IOC fixes, check for IOC down condition.
    [SCSI] bfa: In MSIX mode, ignore spurious RME interrupts when FCoE ports are in FW mismatch state.
    [SCSI] bfa: Fix Command Queue (CPE) full condition check and ack CPE interrupt.
    [SCSI] bfa: IOC recovery fix in fcmode.
    [SCSI] bfa: AEN and byte alignment fixes.
    [SCSI] bfa: Introduce a link notification state machine.
    [SCSI] bfa: Added firmware save clear feature for BFA driver.
    [SCSI] bfa: FCS authentication related changes.
    [SCSI] bfa: PCI VPD, FIP and include file changes.
    [SCSI] bfa: Fix to copy fpma MAC when requested by user space application.
    [SCSI] bfa: RPORT state machine: direct attach mode fix.
    ...

    Linus Torvalds
     

12 Mar, 2010

2 commits

  • Print the return code of ib_post_send() if it fails to make these
    debugging messages more useful.

    Signed-off-by: Or Gerlitz
    Signed-off-by: Roland Dreier

    Or Gerlitz
     
  • The IPoIB UD QP reports send completions to priv->send_cq, which is
    usually left unarmed; it only gets armed when the number of
    outstanding send requests reaches the size of the TX queue. This
    arming is done only in the send path for the UD QP. However, when
    sending CM packets, the net queue may be stopped for the same reasons
    but no measures are taken to recover the UD path from a lockup.

    Consider this scenario: a host sends high rate of both CM and UD
    packets, with a TX queue length of N. If at some time the number of
    outstanding UD packets is more than N/2 and the overall outstanding
    packets is N-1, and CM sends a packet (making the number of
    outstanding sends equal N), the TX queue will be stopped. When all
    the CM packets complete, the number of outstanding packets will still
    be higher than N/2 so the TX queue will not be restarted.

    Fix this by calling ib_req_notify_cq() when the queue is stopped in
    the CM path.

    Signed-off-by: Eli Cohen
    Signed-off-by: Roland Dreier

    Eli Cohen
     

03 Mar, 2010

2 commits

  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband: (48 commits)
    IB/srp: Clean up error path in srp_create_target_ib()
    IB/srp: Split send and recieve CQs to reduce number of interrupts
    RDMA/nes: Add support for KR device id 0x0110
    IB/uverbs: Use anon_inodes instead of private infinibandeventfs
    IB/core: Fix and clean up ib_ud_header_init()
    RDMA/cxgb3: Mark RDMA device with CXIO_ERROR_FATAL when removing
    RDMA/cxgb3: Don't allocate the SW queue for user mode CQs
    RDMA/cxgb3: Increase the max CQ depth
    RDMA/cxgb3: Doorbell overflow avoidance and recovery
    IB/core: Pack struct ib_device a little tighter
    IB/ucm: Clean whitespace errors
    IB/ucm: Increase maximum devices supported
    IB/ucm: Use stack variable 'base' in ib_ucm_add_one
    IB/ucm: Use stack variable 'devnum' in ib_ucm_add_one
    IB/umad: Clean whitespace
    IB/umad: Increase maximum devices supported
    IB/umad: Use stack variable 'base' in ib_umad_init_port
    IB/umad: Use stack variable 'devnum' in ib_umad_init_port
    IB/umad: Remove port_table[]
    IB/umad: Convert *cdev to cdev in struct ib_umad_port
    ...

    Linus Torvalds
     
  • The iscsi_eh_target_reset has been modified to attempt
    target reset only. If it fails, then iscsi_eh_session_reset
    will be called.

    Signed-off-by: Mike Christie
    Signed-off-by: Jayamohan Kallickal
    Signed-off-by: James Bottomley

    Jayamohan Kallickal
     

02 Mar, 2010

4 commits


28 Feb, 2010

1 commit

  • Apparently bogus mc address can break IPOIB multicast processing. Therefore
    returning the check for addrlen back until this is resolved in bonding (I don't
    see any other point from where mc address with non-dev->addr_len length can came
    from).

    Signed-off-by: Jiri Pirko
    Signed-off-by: David S. Miller

    Jiri Pirko
     

26 Feb, 2010

1 commit


25 Feb, 2010

8 commits

  • Currently the iSER receive completion flow takes the session lock
    twice. Optimize it to avoid the first one by letting
    iser_task_rdma_finalize() be called only from the cleanup_task
    callback invoked by iscsi_free_task, thus reducing the contention on
    the session lock between the scsi command submission to the scsi
    command completion flows.

    Signed-off-by: Or Gerlitz
    Reviewed-by: Mike Christie
    Signed-off-by: Roland Dreier

    Or Gerlitz
     
  • libiscsi passthrough mode invokes the transport xmit calls directly
    without first going through an internal queue, unlike the other mode,
    which uses a queue and a xmitworker thread. Now that the "cant_sleep"
    prerequisite of iscsi_host_alloc is met, move to use it. Handling
    xmit errors is now done by the passthrough flow of libiscsi. Since
    the queue/worker aren't used in this mode, the code that schedules the
    xmitworker is removed.

    Signed-off-by: Or Gerlitz
    Reviewed-by: Mike Christie
    Signed-off-by: Roland Dreier

    Or Gerlitz
     
  • Remove unnecessary checks for the IB connection state and for QP
    overflow, as conn state changes are reported by iSER to libiscsi and
    handled there. QP overflow is theoretically possible only when
    unsolicited data-outs are used; anyway it's being checked and handled
    by HW drivers.

    Signed-off-by: Or Gerlitz
    Signed-off-by: Roland Dreier

    Or Gerlitz
     
  • Two minor flows in iSER's data path still use allocations; move them
    to be atomic as a preperation step towards moving to use libiscsi
    passthrough mode.

    Signed-off-by: Or Gerlitz
    Signed-off-by: Roland Dreier

    Or Gerlitz
     
  • Simplify and shrink the logic/code used for the send descriptors.
    Changes include removing struct iser_dto (an unnecessary abstraction),
    using struct iser_regd_buf only for handling SCSI commands, using
    dma_sync instead of dma_map/unmap, etc.

    Signed-off-by: Or Gerlitz
    Signed-off-by: Roland Dreier

    Or Gerlitz
     
  • Use a different CQ for send completions, where send completions are
    polled by the interrupt-driven receive completion handler. Therefore,
    interrupts aren't used for the send CQ.

    Signed-off-by: Or Gerlitz
    Signed-off-by: Roland Dreier

    Or Gerlitz
     
  • Now that both the posting and reaping of receive buffers is done in
    the completion path, the counter of outstanding buffers not be atomic.

    Signed-off-by: Or Gerlitz
    Signed-off-by: Roland Dreier

    Or Gerlitz
     
  • Currently, the recv buffer posting logic is based on the transactional
    nature of iSER which allows for posting a buffer before sending a PDU.
    Change this to post only when the number of outstanding recv buffers
    is below a water mark and in a batched manner, thus simplifying and
    optimizing the data path. Use a pre-allocated ring of recv buffers
    instead of allocating from kmem cache. A special treatment is given
    to the login response buffer whose size must be 8K unlike the size of
    buffers used for any other purpose which is 128 bytes.

    Signed-off-by: Or Gerlitz
    Signed-off-by: Roland Dreier

    Or Gerlitz