Merge pull request #149 from shefty/master

Provide reference calls that return ENOSYS for providers to use
configury: re-factor to	extract	common code

Pull common code out of the provider .m4 scripts and back into a
central .m4 file.  Now much of the setup and administration stuff for
FI_<provider>_CONFIGURE is done in a central location -- the
_CONFIGURE macros can just be small chunks of code that focus on
checking to see if that provider can be built (e.g., check for headers
and libraries and that's it).
.gitignore: don't ignore the entire config directory

It's useful to put our own .m4 files in config, so just ignore the
specific Autotools-generated files.
Remove *.org qualifier from BSD license name.

Signed-off-by: Reese Faucette <rfaucett@cisco.com>
psm: remove outdated use of HAVE_PSM
verbs: remove outdated use of HAVE_VERBS
Merge pull request #154 from jsquyres/topic/moar-configury

configury: re-factor to extract common code
Merge pull request #155 from rfaucett/license2

Remove *.org qualifier from BSD license name.
prov/verbs: Remove mlx4 direct support

Remove unsupported mlx4 direct support from the verbs configure

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
prov/verbs: Actually enable building the verbs provider

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
Add pretty-printer for enums, OR-able int members, and structures
from fi_info. The current list of printable structures is defined
in fabric.h - fi_pp_type.

A call like:

char *buf = fi_tostr(cur, FI_INFO);
printf("%s", buf);

Will produce a string containing (subject to change!):

fi_info:
  type: FI_EP_RDM
  ep_cap: [FI_MSG, FI_RMA, FI_TAGGED, FI_ATOMICS, FI_BUFFERED_RECV, ]
  op_flags: []
  fi_addr_format:       FI_ADDR_PROTO
  connreq:      0
  source addr:  (null)
  dest addr:    (null)
  fi_ep_attr:
    protocol:   FI_PROTO_IB_RC
    max_msg_size:       -1
    inject_size:        64
    total_buffered_recv:        -1
    max_order_raw_size: 0
    max_order_war_size: 0
    max_order_waw_size: 0
    mem_tag_format:     aaaaaaaaaaaaaaaa
    msg_order: [FI_ORDER_SAS, ]
    tx_ctx_cnt: 0
    rx_ctx_cnt: 0
  fi_domain_attr:
    name:       psm
    caps: [FI_WRITE_COHERENT, FI_CONTEXT, ]
    threading:  FI_THREAD_PROGRESS
    control_progress:   FI_PROGRESS_MANUAL
    data_progress:      FI_PROGRESS_MANUAL
    mr_key_size:        0
    eq_data_size:       0
    ep_cnt:     0
    tx_ctx_cnt: 0
    rx_ctx_cnt: 0
    max_ep_tx_ctx:      0
    max_ep_rx_ctx:      0
  fi_fabric_attr:
    name:               psm
    prov_name:  PSM
    prov_version:       9

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
fabric: Add TX/RX class types

Transmit and receive contexts use the same structure as fid_ep,
but the class types should be different, so that apps and
providers can distinguish between them, separate from directing
them to different entry points.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
fabric: Move domain capability flag into fi_info

Applications will likely care about requesting specific domain
capabilities, similar to endpoint capabilities.  Rather than
having an app declare a domain attr structure and link to it
from fi_info, move the dom_cap field into fi_info, similar to
the ep_cap field.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
fabric: Define size of tx/rx queues

Define a mechanism that can be used to describe the size of
transmit and receive contexts.  Rather than defining that all
queues contain a fixed number of entries of a fixed size, we
describe a generic set of attributes that allow an app to
determine whether the next operation can be queued with the
tx/rx context.

This supports fixed sized queues, but also allows for queues
that accept a variable number of requests, based on the size
of the request.  There is a restriction that the size of the
underlying queue is a fixed size, in terms of memory.  But
trying to suport a dynamically sizable queue would require
a lot more involvement with the application.

Link from fi_info to the tx/rx attributes, so that the
application can specify the context sizes on endpoint
creation.  This also allows the provider to return the
size information from fi_getinfo.  As part of the change,
move the op_flags from fi_info into the tx/rx attributes,
which will allow the app to specify different flags for
transmit and receive operations.

Update the tostr function accordingly, plus toss in a few
bonus changes to improve code consistency.

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