--- /dev/null
+Bottom: b2b2b839d978bb240b0641dff8459eaee9553d17
+Top: b2b2b839d978bb240b0641dff8459eaee9553d17
+Author: Sean Hefty <sean.hefty@intel.com>
+Date: 2012-09-07 14:38:07 -0700
+
+Use extensions to define XRC support
+
+Define a common libibverbs extension to support XRC.
+
+XRC introduces several new concepts and structures:
+
+XRC domains: xrcd's are a type of protection domain used to
+associate shared receive queues with xrc queue pairs. Since
+xrcd are meant to be shared among multiple processes, we
+introduce new APIs to open/close xrcd's.
+
+XRC shared receive queues: xrc srq's are similar to normal
+srq's, except that they are bound to an xrcd, rather
+than to a protection domain. Based on the current spec
+and implementation, they are only usable with xrc qps. To
+support xrc srq's, we extend the existing srq_init_attr
+structure to include an srq type and other needed information.
+The extended fields are ignored unless extensions are being
+used to support existing applications.
+
+XRC queue pairs: xrc defines two new types of QPs. The
+initiator, or send-side, xrc qp behaves similar to a send-
+only RC qp. xrc send qp's are managed through the existing
+QP functions. The send_wr structure is extended in a back-
+wards compatible way to support posting sends on a send xrc
+qp, which require specifying the remote xrc srq.
+
+The target, or receive-side, xrc qp behaves differently
+than other implemented qp's. A recv xrc qp can be created,
+modified, and destroyed like other qp's through the existing
+calls. The qp_init_attr structure is extended for xrc qp's,
+with extension support dependent upon the qp_type being
+defined correctly.
+
+Because xrc recv qp's are bound to an xrcd, rather than a pd,
+it is intended to be used among multiple processes. Any process
+with access to an xrcd may allocate and connect an xrc recv qp.
+The actual xrc recv qp is allocated and managed by the kernel.
+If the owning process explicit destroys the xrc recv qp, it is
+destroyed. However, if the xrc recv qp is left open when the
+user process exits or closes its device, then the lifetime of
+the xrc recv qp is bound with the lifetime of the xrcd.
+
+The user to kernel ABI is extended to account for opening/
+closing the xrcd and the creation of the extended srq type.
+
+Signed-off-by: Sean Hefty <sean.hefty@intel.com>
+
+
+---
+
+