Version: 1
-Previous: d2b42e278b5f9b48ab1ea79467ad60e0989a482f
-Head: 28d09d9aa75adad7ae5af5918a01511de3b861ef
+Previous: be80216b1e9f29403e638aeff0da5fbebe86e937
+Head: fb8aa3e0b8ed628564d7d774907fd17a72a23522
Applied:
verbs-ext: 6fbf2b29ca68fc10b7ee47dc0c09f54db0b32320
- compat-ex: 557abc4b28ae5718e51472659778d57b60a1f7e4
- refresh-temp: 28d09d9aa75adad7ae5af5918a01511de3b861ef
+ compat-ex: fb8aa3e0b8ed628564d7d774907fd17a72a23522
Unapplied:
xrcd: 0e21cac2fc216f26a141a34cfb9e6ce5adfcd9f0
Hidden:
libibverbs: Support older providers that do not support extensions
-Provide a compatibility layer for providers that do not support
-extended structures. Since the providers may have been built
-against an older verbs header, we need to map between the larger
-structured exported by verbs and the smaller ones allocated by
-the provider.
+In order to support providers that do not handle extensions, including
+providers built against an older version of ibverbs, add a compatibility
+layer. This allows most of the core ibverbs code to assume that
+extensions are always available. The compatibility layer is responsible
+for converting between the extended verbs and the current structure
+definitions.
+
+The compatibility layer allows applications to make use of extended
+structures, independent of the provider supporting them, and allows us
+to extend existing structures which are normally allocated by the
+provider: ibv_qp, ibv_srq, ibv_ah, ibv_mr, ibv_cq, ibv_pd, ibv_mw,
+and ibv_comp_channel. Existing applications are unaffected.
+
+The compatibility layer is similar to the 1.0 compat code. It allocates
+the extended structures, which then point to the ones allocated by the
+provider. For the most part, the compatibility code is invoked by
+directing the ibv_context ops into a compat function, which then redirects
+the call to the provider. This results in one extra level of indirection
+when running with a provider that does not support extensions.
+
+The exceptions to the indirection are opening and closing a device and
+handling asynchronous events.
Signed-off-by: Sean Hefty <sean.hefty@intel.com>