14 Oct, 2011

1 commit


26 May, 2011

2 commits

  • The RDMA CM currently infers the QP type from the port space selected
    by the user. In the future (eg with RDMA_PS_IB or XRC), there may not
    be a 1-1 correspondence between port space and QP type. For netlink
    export of RDMA CM state, we want to export the QP type to userspace,
    so it is cleaner to explicitly associate a QP type to an ID.

    Modify rdma_create_id() to allow the user to specify the QP type, and
    use it to make our selections of datagram versus connected mode.

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

    Sean Hefty
     
  • Move cma.c's internal definition of enum cma_state to enum rdma_cm_state
    in an exported header so that it can be exported via RDMA netlink.

    Signed-off-by: Nir Muchtar
    Signed-off-by: Roland Dreier

    Nir Muchtar
     

10 May, 2011

1 commit

  • Lustre requires that clients bind to a privileged port number before
    connecting to a remote server. On larger clusters (typically more
    than about 1000 nodes), the number of privileged ports is exhausted,
    resulting in lustre being unusable.

    To handle this, we add support for reusable addresses to the rdma_cm.
    This mimics the behavior of the socket option SO_REUSEADDR. A user
    may set an rdma_cm_id to reuse an address before calling
    rdma_bind_addr() (explicitly or implicitly). If set, other
    rdma_cm_id's may be bound to the same address, provided that they all
    have reuse enabled, and there are no active listens.

    If rdma_listen() is called on an rdma_cm_id that has reuse enabled, it
    will only succeed if there are no other id's bound to that same
    address. The reuse option is exported to user space. The behavior of
    the kernel reuse implementation was verified against that given by
    sockets.

    This patch is derived from a path by Ira Weiny

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

    Hefty, Sean
     

12 Feb, 2010

1 commit


05 Aug, 2008

1 commit

  • There are a few places where the RDMA CM code handles IPv6 by doing

    struct sockaddr addr;
    u8 pad[sizeof(struct sockaddr_in6) -
    sizeof(struct sockaddr)];

    This is fragile and ugly; handle this in a better way with just

    struct sockaddr_storage addr;

    [ Also roll in patch from Aleksey Senin to
    switch to struct sockaddr_storage and get rid of padding arrays in
    struct rdma_addr. ]

    Signed-off-by: Roland Dreier

    Roland Dreier
     

23 Jul, 2008

2 commits

  • Consumers that want to re-use their QPs in new connections need to
    know when the QP has exited the timewait state. Report the timewait
    event through the rdma_cm.

    Signed-off-by: Amir Vadai
    Acked-by: Sean Hefty
    Signed-off-by: Roland Dreier

    Amir Vadai
     
  • Add an RDMA_CM_EVENT_ADDR_CHANGE event can be used by rdma-cm
    consumers that wish to have their RDMA sessions always use the same
    links (eg ) as the IP stack does. In the current code, this
    does not happen when bonding is used and fail-over happened but the IB
    link used by an already existing session is operating fine.

    Use the netevent notification for sensing that a change has happened
    in the IP stack, then scan the rdma-cm ID list to see if there is an
    ID that is "misaligned" with respect to the IP stack, and deliver
    RDMA_CM_EVENT_ADDR_CHANGE for this ID. The consumer can act on the
    event or just ignore it.

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

    Or Gerlitz
     

15 Jul, 2008

2 commits

  • Remove subversion $Id lines and improve readability by fixing other
    coding style problems pointed out by checkpatch.pl.

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

    Dotan Barak
     
  • The license text for several files references a third software license
    that was inadvertently copied in. Update the license to what was
    intended. This update was based on a request from HP.

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

    Sean Hefty
     

10 Oct, 2007

1 commit

  • Provide support to specify a type of service for a communication
    identifier. A new function call is used when dealing with IPv4
    addresses. For IPv6 addresses, the ToS is specified through the
    traffic class field in the sockaddr_in6 structure.

    Signed-off-by: Sean Hefty

    [ The comments Eitan Zahavi and myself have made over the v1 post at

    were fully addressed. ]

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

    Sean Hefty
     

17 Feb, 2007

1 commit

  • Extend rdma_cm to support multicast communication. Multicast support
    is added to the existing RDMA_PS_UDP port space, as well as a new
    RDMA_PS_IPOIB port space. The latter port space allows joining the
    multicast groups used by IPoIB, which enables offloading IPoIB traffic
    to a separate QP. The port space determines the signature used in the
    MGID when joining the group. The newly added RDMA_PS_IPOIB also
    allows for unicast operations, similar to RDMA_PS_UDP.

    Supporting the RDMA_PS_IPOIB requires changing how UD QPs are initialized,
    since we can no longer assume that the qkey is constant. This requires
    saving the Q_Key to use when attaching to a device, so that it is
    available when creating the QP. The Q_Key information is exported to
    the user through the existing rdma_init_qp_attr() interface.

    Multicast support is also exported to userspace through the rdma_ucm.

    Signed-off-by: Roland Dreier

    Sean Hefty
     

13 Dec, 2006

4 commits

  • Allow the use of UD QPs through the rdma_cm, in order to provide
    address translation services for resolving IB addresses for datagram
    messages using SIDR.

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

    Sean Hefty
     
  • During connection establishment, the passive side of a connection can
    receive messages from the active side before the connection event has
    been delivered to the user. Allow the passive side to send messages
    in response to received data before the event is delivered. To handle
    the case where the connection messages are lost, a new rdma_notify()
    function is added that users may invoke to force a connection into the
    established state.

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

    Sean Hefty
     
  • Connection information was never given to the recipient of a
    connection request or reply message. Only the event was delivered.
    Report the connection data with the event to allows user to
    reject the connection based on the requested parameters, or adjust
    their resources to match the request.

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

    Sean Hefty
     
  • The qp_type parameter into the rdma_cm is unneeded, and can be
    misleading. The QP type should be determined from the port space.

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

    Sean Hefty
     

23 Sep, 2006

2 commits


18 Jun, 2006

1 commit

  • 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