10 Jan, 2017

12 commits

  • Support for SMC socket monitoring via netlink sockets of protocol
    NETLINK_SOCK_DIAG.

    Signed-off-by: Ursula Braun
    Signed-off-by: David S. Miller

    Ursula Braun
     
  • smc_shutdown() and smc_release() handling
    delayed linkgroup cleanup for linkgroups without connections

    Signed-off-by: Ursula Braun
    Signed-off-by: David S. Miller

    Ursula Braun
     
  • move RMBE data into user space buffer and update managing cursors

    Signed-off-by: Ursula Braun
    Signed-off-by: David S. Miller

    Ursula Braun
     
  • copy data to kernel send buffer, and trigger RDMA write

    Signed-off-by: Ursula Braun
    Signed-off-by: David S. Miller

    Ursula Braun
     
  • send and receive CDC messages (via IB message send and CQE)

    Signed-off-by: Ursula Braun
    Signed-off-by: David S. Miller

    Ursula Braun
     
  • send and receive LLC messages CONFIRM_LINK (via IB message send and CQE)

    Signed-off-by: Ursula Braun
    Signed-off-by: David S. Miller

    Ursula Braun
     
  • The base containers for RDMA transport are work requests and completion
    queue entries processed through Infiniband verbs:
    * allocate and initialize these areas
    * map these areas to DMA
    * implement the basic communication consisting of work request posting
    and receival of completion queue events

    Signed-off-by: Ursula Braun
    Signed-off-by: David S. Miller

    Ursula Braun
     
  • * create smc_connection for SMC-sockets
    * determine suitable link group for a connection
    * create a new link group if necessary

    Signed-off-by: Ursula Braun
    Signed-off-by: David S. Miller

    Ursula Braun
     
  • * CLC (Connection Layer Control) handshake

    Signed-off-by: Ursula Braun
    Signed-off-by: David S. Miller

    Ursula Braun
     
  • Connection creation with SMC-R starts through an internal
    TCP-connection. The Ethernet interface for this TCP-connection is not
    restricted to the Ethernet interface of a RoCE device. Any existing
    Ethernet interface belonging to the same physical net can be used, as
    long as there is a defined relation between the Ethernet interface and
    some RoCE devices. This relation is defined with the help of an
    identification string called "Physical Net ID" or short "pnet ID".
    Information about defined pnet IDs and their related Ethernet
    interfaces and RoCE devices is stored in the SMC-R pnet table.

    A pnet table entry consists of the identifying pnet ID and the
    associated network and IB device.
    This patch adds pnet table configuration support using the
    generic netlink message interface referring to network and IB device
    by their names. Commands exist to add, delete, and display pnet table
    entries, and to flush or display the entire pnet table.

    There are cross-checks to verify whether the ethernet interfaces
    or infiniband devices really exist in the system. If either device
    is not available, the pnet ID entry is not created.
    Loss of network devices and IB devices is also monitored;
    a pnet ID entry is removed when an associated network or
    IB device is removed.

    Signed-off-by: Thomas Richter
    Signed-off-by: Ursula Braun
    Signed-off-by: David S. Miller

    Thomas Richter
     
  • * create a list of SMC IB-devices

    Signed-off-by: Ursula Braun
    Signed-off-by: David S. Miller

    Ursula Braun
     
  • * enable smc module loading and unloading
    * register new socket family
    * basic smc socket creation and deletion
    * use backing TCP socket to run CLC (Connection Layer Control)
    handshake of SMC protocol
    * Setup for infiniband traffic is implemented in follow-on patches.
    For now fallback to TCP socket is always used.

    Signed-off-by: Ursula Braun
    Reviewed-by: Utz Bacher
    Signed-off-by: David S. Miller

    Ursula Braun