30 Nov, 2006

1 commit

  • The ib_cm_establish() function is replaced with a more generic
    ib_cm_notify(). This routine is used to notify the CM that failover
    has occurred, so that future CM messages (LAP, DREQ) reach the remote
    CM. (Currently, we continue to use the original path) This bumps the
    userspace CM ABI.

    New alternate path information is captured when a LAP message is sent
    or received. This allows QP attributes to be initialized for the user
    when a new path is loaded after failover occurs.

    Signed-off-by: Sean Hefty
    Signed-off-by: Roland Dreier

    Sean Hefty
     

03 Nov, 2006

1 commit


31 Oct, 2006

1 commit


23 Sep, 2006

8 commits

  • Relevant SA queries are actually "greater than" / "less than", not
    "greater than or equal" / "less than or equal" as the names imply.
    (See IB spec 1.2 Vol 1, 15.2.5.16 PATHRECORD/Table 205 PathRecord)

    Signed-off-by: Michael S. Tsirkin
    Signed-off-by: Roland Dreier

    Michael S. Tsirkin
     
  • Document the reject sending and modifying QP to error done in rdma_accept().

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

    Or Gerlitz
     
  • Clarify that rdma_destroy_id cancels outstanding asynchronous operations on the
    Associated id.

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

    Or Gerlitz
     
  • Require users to register with SA module, to prevent the sa_query
    module text from going away while an SA query callback is still
    running. Update all in-tree users for the new interface.

    Signed-off-by: Michael S. Tsirkin
    Signed-off-by: Sean Hefty
    Signed-off-by: Roland Dreier

    Michael S. Tsirkin
     
  • Modifications to the existing rdma header files, core files, drivers,
    and ulp files to support iWARP, including:
    - Hook iWARP CM into the build system and use it in rdma_cm.
    - Convert enum ib_node_type to enum rdma_node_type, which includes
    the possibility of RDMA_NODE_RNIC, and update everything for this.

    Signed-off-by: Tom Tucker
    Signed-off-by: Steve Wise
    Signed-off-by: Roland Dreier

    Tom Tucker
     
  • Add an iWARP Connection Manager (CM), which abstracts connection
    management for iWARP devices (RNICs). It is a logical instance of the
    xx_cm where xx is the transport type (ib or iw). The symbols exported
    are used by the transport independent rdma_cm module, and are
    available also for transport dependent ULPs.

    Signed-off-by: Tom Tucker
    Signed-off-by: Steve Wise
    Signed-off-by: Roland Dreier

    Tom Tucker
     
  • Pass a struct ib_udata to the low-level driver's ->modify_srq() and
    ->modify_qp() methods, so that it can get to the device-specific data
    passed in by the userspace driver.

    Signed-off-by: Ralph Campbell
    Signed-off-by: Roland Dreier

    Ralph Campbell
     
  • Add a ib_uverbs_resize_cq_resp.driver_data field so that low-level
    drivers can return data from a resize CQ operation to userspace. Have
    ib_uverbs_resize_cq() only copy the cqe field, to avoid having to bump
    the userspace ABI.

    Signed-off-by: Ralph Campbell
    Signed-off-by: Roland Dreier

    Ralph Campbell
     

19 Sep, 2006

1 commit


25 Jul, 2006

1 commit

  • Validate MADs sent by userspace clients for spec compliance with
    C13-18.1.1 (prevent duplicate requests and responses sent on the
    same port). Without this, RMPP transactions get aborted because
    of duplicate packets.

    This patch is similar to that provided by Jack Morgenstein.

    Signed-off-by: Sean Hefty
    Signed-off-by: Michael S. Tsirkin
    Signed-off-by: Jack Morgenstein
    Signed-off-by: Roland Dreier

    Sean Hefty
     

15 Jul, 2006

2 commits

  • ib_fmr_pool_map_phys gets the virtual address by pointer but never writes
    there, and users (e.g. srp) seem to assume this and ignore the value
    returned. This patch cleans up the API to get the VA by value, and updates
    all users.

    Signed-off-by: Michael S. Tsirkin
    Acked-by: Roland Dreier
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Michael S. Tsirkin
     
  • The device address contains unsigned character arrays, which contain raw GID
    addresses. The GIDs may not be naturally aligned, so do not cast them to
    structures or unions.

    Signed-off-by: Sean Hefty
    Signed-off-by: Michael S. Tsirkin
    Cc: Roland Dreier
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Michael S. Tsirkin
     

05 Jul, 2006

1 commit

  • * git://git.infradead.org/hdrinstall-2.6:
    Remove export of include/linux/isdn/tpam.h
    Remove and from userspace export
    Restrict headers exported to userspace for SPARC and SPARC64
    Add empty Kbuild files for 'make headers_install' in remaining arches.
    Add Kbuild file for Alpha 'make headers_install'
    Add Kbuild file for SPARC 'make headers_install'
    Add Kbuild file for IA64 'make headers_install'
    Add Kbuild file for S390 'make headers_install'
    Add Kbuild file for i386 'make headers_install'
    Add Kbuild file for x86_64 'make headers_install'
    Add Kbuild file for PowerPC 'make headers_install'
    Add generic Kbuild files for 'make headers_install'
    Basic implementation of 'make headers_check'
    Basic implementation of 'make headers_install'

    Linus Torvalds
     

18 Jun, 2006

12 commits

  • This adds the Kbuild files listing the files which are to be installed by
    the 'headers_install' make target, in generic directories.

    Signed-off-by: David Woodhouse

    David Woodhouse
     
  • Currently, all userspace verbs operations that call into the kernel
    are serialized by ib_uverbs_idr_mutex. This can be a scalability
    issue for some workloads, especially for devices driven by the ipath
    driver, which needs to call into the kernel even for datapath
    operations.

    Fix this by adding reference counts to the userspace objects, and then
    converting ib_uverbs_idr_mutex into a spinlock that only protects the
    idrs long enough to take a reference on the object being looked up.
    Because remove operations may fail, we have to do a slightly funky
    two-step deletion, which is described in the comments at the top of
    uverbs_cmd.c.

    This also still leaves ib_uverbs_idr_lock as a single lock that is
    possibly subject to contention. However, the lock hold time will only
    be a single idr operation, so multiple threads should still be able to
    make progress, even if ib_uverbs_idr_lock is being ping-ponged.

    Surprisingly, these changes even shrink the object code:

    add/remove: 23/5 grow/shrink: 4/21 up/down: 633/-693 (-60)

    Signed-off-by: Roland Dreier

    Roland Dreier
     
  • Add a call to initialize address handle attributes given a path record.
    This is used by the CM, and would be useful for users of UD QPs.

    Signed-off-by: Sean Hefty
    Signed-off-by: Roland Dreier

    Sean Hefty
     
  • Add a function to initialize address handle attributes from a work
    completion. This functionality is duplicated by both verbs and the CM.

    Signed-off-by: Sean Hefty
    Signed-off-by: Roland Dreier

    Sean Hefty
     
  • The P_Key is provided into a SIDR REQ in two places, once as a
    parameter, and again in the path record. Remove the P_Key as a
    parameter and always use the one given in the path record.

    This change has no practical effect on ABI functionality.

    Signed-off-by: Sean Hefty
    Signed-off-by: Roland Dreier

    Sean Hefty
     
  • Move ipath's struct port_info into , so that it can be
    used by mthca to implement client reregister support.

    Remove the __attribute__((packed)) because all the members of the struct
    are naturally aligned anyway.

    Signed-off-by: Leonid Arsh
    Signed-off-by: Roland Dreier

    Leonid Arsh
     
  • Add IB_EVENT_CLIENT_REREGISTER to enum so low-level drivers can
    generate "client reregister" events.

    Signed-off-by: Leonid Arsh
    Signed-off-by: Roland Dreier

    Leonid Arsh
     
  • Add an LMC cache to struct ib_device, and add a function
    ib_get_cached_lmc() to query the cache.

    Signed-off-by: Jack Morgenstein
    Signed-off-by: Sean Hefty
    Signed-off-by: Roland Dreier

    Jack Morgenstein
     
  • Kernel connection management agent over InfiniBand that connects based
    on IP addresses. The agent defines a generic RDMA connection
    abstraction to support clients wanting to connect over different RDMA
    devices.

    The agent also handles RDMA device hotplug events on behalf of clients.

    Signed-off-by: Sean Hefty
    Signed-off-by: Roland Dreier

    Sean Hefty
     
  • Add an address translation service that maps IP addresses to
    InfiniBand GID addresses using IPoIB.

    Signed-off-by: Sean Hefty
    Signed-off-by: Roland Dreier

    Sean Hefty
     
  • Extend matching connection requests to listens in the InfiniBand CM to
    include private data checks.

    This allows applications to listen on the same service identifier,
    with private data directing the request to the appropriate application.

    Signed-off-by: Sean Hefty
    Signed-off-by: Roland Dreier

    Sean Hefty
     
  • Provide common handling for marshalling data between userspace clients
    and kernel InfiniBand drivers.

    Signed-off-by: Sean Hefty
    Signed-off-by: Roland Dreier

    Sean Hefty
     

11 Apr, 2006

1 commit

  • Push translation of static rate to HCA format into low-level drivers,
    where it belongs. For static rate encoding, use encoding of rate
    field from IB standard PathRecord, with addition of value 0, for
    backwards compatibility with current usage. The changes are:

    - Add enum ib_rate to midlayer includes.
    - Get rid of static rate translation in IPoIB; just use static rate
    directly from Path and MulticastGroup records.
    - Update mthca driver to translate absolute static rate into the
    format used by hardware. This also fixes mthca's static rate
    handling for HCAs that are capable of 4X DDR.

    Signed-off-by: Jack Morgenstein
    Signed-off-by: Roland Dreier

    Jack Morgenstein
     

30 Mar, 2006

1 commit


21 Mar, 2006

10 commits

  • Add support for sending and receiving large RMPP transfers. The old
    code supports transfers only as large as a single contiguous kernel
    memory allocation. This patch uses linked list of memory buffers when
    sending and receiving data to avoid needing contiguous pages for
    larger transfers.

    Receive side: copy the arriving MADs in chunks instead of coalescing
    to one large buffer in kernel space.

    Send side: split a multipacket MAD buffer to a list of segments,
    (multipacket_list) and send these using a gather list of size 2.
    Also, save pointer to last sent segment, and retrieve requested
    segments by walking list starting at last sent segment. Finally,
    save pointer to last-acked segment. When retrying, retrieve
    segments for resending relative to this pointer. When updating last
    ack, start at this pointer.

    Signed-off-by: Jack Morgenstein
    Signed-off-by: Sean Hefty
    Signed-off-by: Roland Dreier

    Jack Morgenstein
     
  • Pass actual capacity of created SRQ back to userspace, so that
    userspace can report accurate capacities. This requires an ABI bump,
    to change struct ib_uverbs_create_srq_resp.

    Signed-off-by: Dotan Barak
    Signed-off-by: Roland Dreier

    Dotan Barak
     
  • Have mthca's create_srq method return the actual capacity of the SRQ
    that gets created. Also update comments in to
    clarify that this is what is expected from ib_create_srq().

    Signed-off-by: Dotan Barak
    Signed-off-by: Roland Dreier

    Dotan Barak
     
  • The size of struct ib_uverbs_create_qp_resp is not even multiple of 8
    bytes. This causes problems for low-level drivers that add private
    data after the structure: 32-bit userspace will look in the wrong
    place for a response from a 64-bit kernel. Fix this by adding a
    reserved field. Also, bump the ABI version because this changes the
    size of a structure.

    Pointed out by Hoang-Nam Nguyen .

    Signed-off-by: Roland Dreier

    Roland Dreier
     
  • Add support to uverbs to handle querying userspace SRQs (shared
    receive queues), including adding an ABI for marshalling requests and
    responses. The kernel midlayer already has the underlying
    ib_query_srq() function.

    Signed-off-by: Dotan Barak
    Signed-off-by: Roland Dreier

    Dotan Barak
     
  • Add support to uverbs to handle querying userspace QPs (queue pairs),
    including adding an ABI for marshalling requests and responses. The
    kernel midlayer already has the underlying ib_query_qp() function.

    Signed-off-by: Dotan Barak
    Signed-off-by: Roland Dreier

    Dotan Barak
     
  • Remove trailing whitespace and fix indentation that with spaces
    instead of tabs.

    Signed-off-by: Roland Dreier

    Roland Dreier
     
  • The in-kernel mthca driver contains a table of which attributes are
    valid for each queue pair state transition. It turns out that both
    other IB drivers -- ipath and ehca -- which are being prepared for
    merging have copied this table, errors and all.

    To forestall this code duplication, move this table and the code to
    check parameters against it into a midlayer library function,
    ib_modify_qp_is_ok().

    Signed-off-by: Roland Dreier

    Roland Dreier
     
  • This patch allows the consumer to set the page size of "pages" mapped
    by the pool FMRs, which is a feature already existing in the base
    verbs API. On the cosmetic side it changes ib_fmr_attr.page_size field
    to be named page_shift.

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

    Or Gerlitz
     
  • Expose a writable "node_desc" sysfs attribute for InfiniBand devices.
    This allows userspace to update the node description with information
    such as the node's hostname, so that IB network management software
    can tie its view to the real world.

    Signed-off-by: Michael S. Tsirkin
    Signed-off-by: Roland Dreier

    Roland Dreier