ofiwg/libfabric — pull request #260 by sayantansur (2014-11-04 19:27:07+00:00)
Title: fi_getinfo: multiple tx/rx attr in hints + mode

Applications may want to use 'mode' with the scalable endpoint
contexts. For example, MPI RMA does not require object allocation
for Put/Get. MPI might desire not to use FI_CONTEXT if a provider
can support communication without it.

Also, most apps might know their context parameters up front since
they were written to exploit those capabilities.
Let apps provide an array of tx/rx attributes so that the provider
knows up front all the various types of tx/rx attributes that will
be created.

This simplifies things for the user as they don't have to learn
what constitutes a subset of capabilities. Things can get tricky
with some parameters like ordering - if base endpoint has FI_ORDER_WAW,
then is FI_ORDER_WAR a subset?

It also simplifies a provider's job that it knows that an arbitrary
subset of ctx capabilities will not be presented to it in the future.

There's also an assumption being made that the base endpoint have
a superset of functionalities as the transmit receive context.
Previously, it was required since the TX/RX contexts could be created
on the fly. Now, if the TX/RX contexts attributes are declared in
getinfo, then is that restriction required? i.e. can't we have a NULL
intersection of features/flags used for base endpoint and a transmit
context. It might increase flexibility for the user.

Signed-off-by: Sayantan Sur