Sean Hefty [Fri, 7 Sep 2012 21:38:07 +0000 (14:38 -0700)]
XRC introduces several new concepts and structures, one of
which is the XRC domain.
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.
The user to kernel ABI is extended to account for opening/
closing the xrcd.
Sean Hefty [Wed, 12 Sep 2012 18:32:27 +0000 (11:32 -0700)]
libibverbs: Support older providers that do not support extensions
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.
Sean Hefty [Wed, 12 Sep 2012 18:32:27 +0000 (11:32 -0700)]
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.
Sean Hefty [Wed, 12 Sep 2012 18:32:27 +0000 (11:32 -0700)]
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.
Sean Hefty [Wed, 12 Sep 2012 18:32:27 +0000 (11:32 -0700)]
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.
Sean Hefty [Wed, 12 Sep 2012 18:32:27 +0000 (11:32 -0700)]
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.
Sean Hefty [Wed, 12 Sep 2012 18:32:27 +0000 (11:32 -0700)]
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.
Sean Hefty [Wed, 12 Sep 2012 18:32:27 +0000 (11:32 -0700)]
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.
Sean Hefty [Wed, 12 Sep 2012 18:32:27 +0000 (11:32 -0700)]
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.
Sean Hefty [Wed, 12 Sep 2012 18:32:27 +0000 (11:32 -0700)]
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.
Sean Hefty [Wed, 12 Sep 2012 18:32:27 +0000 (11:32 -0700)]
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.
Sean Hefty [Wed, 12 Sep 2012 18:32:27 +0000 (11:32 -0700)]
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.