prov/psm: remove FI_EVENT from counter binding flag

Counters should always count. The FI_EVENT (FI_COMPLETION) flag
only affects CQ.

Signed-off-by: Jianxin Xiong <jianxin.xiong@intel.com>
prov/psm: keep track the info of active endpoints in domain

The provider supports at most one endpoint per API set. This change
allows (1) close an endpoint and open another with similar or less
API sets; (2) locate the endpoint at the RMA target side in order to
update the counters with REMOTE_READ/REMOTE_WRITE flag. Previously
the RMA target can only identify the domain (or the PSM endpoint)
and such update can only be performed on countered bound to the MR.

Signed-off-by: Jianxin Xiong <jianxin.xiong@intel.com>
prov/psm: support binding counters to ep to track RMA target access

Signed-off-by: Jianxin Xiong <jianxin.xiong@intel.com>
prov/psm: only update MR bound CQ/CNTR when the memory is written

Signed-off-by: Jianxin Xiong <jianxin.xiong@intel.com>
Merge branch 'master' of ssh://github.com/ofiwg/libfabric
Merge pull request #337 from j-xiong/master

prov/psm: counter and cq updates -- FI_EVENT flag, rma target, etc
docs: Remove developer certificate of origin

OpenFabrics has developer contribution agreements as
part of their bylaws.  Remove the copied certificate that
was pulled in from the Linux kernel and instead reference
the OFA bylaws.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
fabric: Remove NONCOHERENT mode bit

There are no known providers that will require this bit.  Remove
it.  It can be added back if a provider ever requires it.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
fabric: Remove AV sync call

AV sync was originaly defined such that an app could insert
several addresses into an AV, then call sync in order to
finish the request.  However, the AV interfaces have evolved
such that the insert call itself is asynchronous, which
eliminates the need for AV sync.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
fabric: Remove EP sync call

Support for EP sync may be difficult for providers to implement,
as it requires providers to track all operations that have been
submitted by an app prior to the sync call being made.  For calls
that do not generate completion entries, there's no clear way for
the provider to know when the call has completed.

The use of a counter doesn't even help, as the provider must be
able to distinguish between calls issued before sync was
invoked, versus calls issued after sync is called, which is
difficult to track when completion may occur out of order.
Out of order completions is common for RDM endpoints and networks
that make use of adaptive routing algorithms.

The problems become more pronounced if the app does something
deranged like call sync after every request.

So, we basically need to punt this up to the application, which
can do a much better job of tracking which requests need to be
completed and has other optimization techniques available, such
as directing completions to different counters.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
fabric: Remove sync call from base fid

Sync is no longer used by any sub-class.  Remove it.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
fabric/cq/eq: Change strerror buf parameter to char *

We're returning a string, so make the return parameter char *,
not void *.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
fabric: Define new shared transmit context object

Shared transmit contexts are currently exposed as struct fi_endpoint.
However, data transfer operations are not posted directely to a
shared tx context.  Instead, transfers are posted to the transport
level endpoints, as those are associated with AVs and CQs.

To avoid confusion, create a new fabric descriptor object for
shared transmit contexts.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
fabric: Add CQ count to domain attributes

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
fabric: Remove provider free/dup info calls

The framework itself should provide the implementation for
fi_freeinfo and fi_dupinfo.  The API does not require that
an app use an fi_info structure that has been returned from
fi_getinfo in any of the function calls.  This restricts a
provider from attempting to do anything fancy in the
fi_getinfo call.

We can simplify the provider interface by only allowing
the framework to implement the free/dup info calls.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
fabric: Remove unneeded len param from EQ/CQ readerr calls

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
fabric: Use object-specific bind calls in place of fi_bind

To increase ease of use and documentation, provide object
specific bind implementations, rather than using a generic
fi_bind routine.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
man: Fixup minor typos from markdown conversion

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
man/cq: Document lifespan of fi_cq_err_entry::err_data

The lifetime is documented in the header file as a comment,
but add this to the man page.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
man/getinfo: Clarify use of hints src/dest address

Document that hints.dest_addr is ignored on input to
fi_getinfo.  If FI_SOURCE flag is specified, document
that hints.src_addr is ignored.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>