~shefty/ibacm.git
4 years agoIbacm: Check the presence of header files for netlink support master
Kaike Wan [Mon, 4 Jan 2016 18:36:33 +0000 (13:36 -0500)]
Ibacm: Check the presence of header files for netlink support

It was found that the latest ibacm will not build in old distros that
don't have the two header files rdma/rdma_netlink.h and rdma/ib_user_sa.h.
To be backward compatible, the netlink support should be disabled if
the header files were absent. This patch will address the issue.

Reported-by: Hal Rosenstock <hal@mellanox.com>
Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
4 years agoibacm: Change default pkey for partitioned fabrics to pkey[0]
Kaike Wan [Wed, 9 Dec 2015 18:48:11 +0000 (13:48 -0500)]
ibacm: Change default pkey for partitioned fabrics to pkey[0]

In an insecure IB fabric, the default pkey in a port is 0xffff, where each
node is allowed to talk to any other node in the fabric, including the SA
node. However, in a secure fabric, to limit member access, not all nodes
can have the full-member default pkey 0xffff. A typical configuration is
to let SA node have pkey 0xffff while all other nodes have pkey 0x7fff; in
addition, each node can be assigned some other full-member pkeys, such as
0x8001 and 0x8002, so that it can be assigned to different partitions.
In this case, each node can access SA, and yet limits its other access to
only those nodes in its assigned partitions. In such a secure fabric,
however, ibacm will not work by interpreting "default" in its default
address file as 0xffff.

To solve the problem, we will use pkey 0 as the default pkey, in
line with ipoib convention.

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
4 years agoibacm: Add support for pathrecord query through netlink
Kaike Wan [Tue, 10 Nov 2015 12:10:27 +0000 (07:10 -0500)]
ibacm: Add support for pathrecord query through netlink

This patch enables ibacm to process pathrecord queries through netlink.
Since ibacm can cache pathrecords, this implementation provides an easy
pathrecord cache for kernel components and therefore offers great
performance advantage on large fabric systems.

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: John Fleck <john.fleck@intel.com>
Signed-off-by: Ira Weiny <ira.weiny@intel.com>
4 years agov1.1.0
Sean Hefty [Wed, 29 Jul 2015 18:34:50 +0000 (11:34 -0700)]
v1.1.0

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
4 years agoAdd missing ibacm_prov man page to install
Sean Hefty [Wed, 29 Jul 2015 18:42:59 +0000 (11:42 -0700)]
Add missing ibacm_prov man page to install

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
4 years agoacmp: Specify SGID in PR query
Sean Hefty [Wed, 29 Jul 2015 20:53:32 +0000 (13:53 -0700)]
acmp: Specify SGID in PR query

If a PR query is issued with the DGID set, but the SGID not set,
then opensm version 3.3.19 (and likely others) will return a PR
with the SGID set to that of the SM.  This appears to be a bug
with the SM, as an SLID is provided.

In order to be safe, specify the SGID with the PR query, so that
we get a PR that's usable.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
5 years agoacme.c: Fix IPv6 address handling in inet_any_pton
Ilya Nelkenbaum [Wed, 17 Jun 2015 05:39:51 +0000 (22:39 -0700)]
acme.c: Fix IPv6 address handling in inet_any_pton

In inet_any_pton() routine, src_addr was used by mistake
instead of addr argument.

Signed-off-by: Ilya Nelkenbaum <ilyan@mellanox.com>
Signed-off-by: Hal Rosenstock <hal@mellanox.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
5 years agoibacm: Use pkey 0xffff or 0x7fff for SA query
Kaike Wan [Wed, 25 Mar 2015 22:40:46 +0000 (15:40 -0700)]
ibacm: Use pkey 0xffff or 0x7fff for SA query

Currently, ibacm uses the first pkey on the local port to query SA. More
appropriately, it should use either 0xffff or 0x7fff for SA query.
However, if the local port is not configured with either pkey, ibacm will
continue to use the first pkey.

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
5 years agoibacm: open only prov endpoints with name/addr configured
Kaike Wan [Wed, 7 Jan 2015 22:25:34 +0000 (14:25 -0800)]
ibacm: open only prov endpoints with name/addr configured

This patch modifies the ibacm core so that it will request the provider to
open those endpoints that have been assigned with at least one name or address.
This change will avoid unnecessary endpoint open and close for those without
any name/address configured by the administrator.

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
5 years agoibacm: Search the pthread and dynamic linker/loader library when linking.
John Fleck [Mon, 15 Dec 2014 15:43:25 +0000 (10:43 -0500)]
ibacm: Search the pthread and dynamic linker/loader library when linking.

When building with RHEL 7, there is an undefined reference to the pthread
and the dynamic linker/loader libraries.

Signed-off-by: John Fleck <john.fleck@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
5 years agoibacm: incorrect ifc_len is specified in SIOCGIFCONF request
Kaike Wan [Wed, 3 Dec 2014 19:42:54 +0000 (11:42 -0800)]
ibacm: incorrect ifc_len is specified in SIOCGIFCONF request

The ifc->ifs_len in the ioctl SIOCGIFCONF request should only specify the
associated ifreq buffer length and not include the ifc header length.
This bug was found by running ibacm with Valgrind:

==8201== Syscall param ioctl(SIOCGIFCONF).ifc_buf points to unaddressable byte(s)
==8201==    at 0x3E886DF7B7: ioctl (in /lib64/libc-2.12.so)
==8201==    by 0x40A11A: acm_if_iter_sys (acm_util.c:154)
==8201==    by 0x406979: acm_get_system_ips (acm.c:1584)
==8201==    by 0x4069FD: acm_assign_ep_names (acm.c:1602)
==8201==    by 0x4070D1: acm_ep_up (acm.c:1744)
==8201==    by 0x407799: acm_port_up (acm.c:1896)
==8201==    by 0x407DE1: acm_activate_devices (acm.c:2027)
==8201==    by 0x409CAC: main (acm.c:2728)
==8201==  Address 0x5063470 is 0 bytes after a block of size 2,576 alloc'd
==8201==    at 0x4A05FDE: malloc (vg_replace_malloc.c:236)
==8201==    by 0x40A0BB: acm_if_iter_sys (acm_util.c:144)
==8201==    by 0x406979: acm_get_system_ips (acm.c:1584)
==8201==    by 0x4069FD: acm_assign_ep_names (acm.c:1602)
==8201==    by 0x4070D1: acm_ep_up (acm.c:1744)
==8201==    by 0x407799: acm_port_up (acm.c:1896)
==8201==    by 0x407DE1: acm_activate_devices (acm.c:2027)
==8201==    by 0x409CAC: main (acm.c:2728)

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Reviewed-by: Ira Weiny <ira.weiny@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
5 years agoibacm/ibacmp: fix a crash when SM restarts
Kaike Wan [Wed, 3 Dec 2014 20:14:44 +0000 (12:14 -0800)]
ibacm/ibacmp: fix a crash when SM restarts

Ibacm may cause segfault when the SM restarts: when the SM restarts, ibacm will
receive P_Key change event and instruct ibacmp to close all endpoints. However,
ibacmp only resets the core endpoint pointer in its ep structure and keeps the ep
in the port's ep_list. Afterwards, the ibacm core will ask ibacmp to create
an ep for each pkey enumerated from the local port. The ep will be found
from the port's ep_list if it exists. However, if an old pkey is not present
in the new SM configuration, the old ep will still be linked in the port's
ep_list with the ep->endpoint being set to NULL. When the ibacm core forwards
the client reregistration event to ibacmp, ibacmp will enumerate the ep_list and
try to join multicast group for each ep, including any one with ep->endpoint
set to NULL. In this case, it will cause segfault in acm_send_sa_mad().
Additional check should be able to avoid the crash.

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
5 years agoibacm: close the provider endpoint when it fails to assign a name to a core endpoint
Kaike Wan [Wed, 3 Dec 2014 19:37:51 +0000 (11:37 -0800)]
ibacm: close the provider endpoint when it fails to assign a name to a core endpoint

In function acm_ep_up(), when it fails to assign any name to an endpoint, the
endpoint in the provider is not properly closed before the core endpoint is
freed. This may cause segfault when ibacmp tries to join multicast group with
a stale core endpoint pointer.

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
5 years agoibacmp: missing '%' in acm_log format
Kaike Wan [Mon, 17 Nov 2014 15:24:01 +0000 (10:24 -0500)]
ibacmp: missing '%' in acm_log format

This debugging print is in function acmp_get_ep().

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
5 years agoibacm: Incorrect return value check in path resolution
Kaike Wan [Thu, 17 Jul 2014 20:16:01 +0000 (13:16 -0700)]
ibacm: Incorrect return value check in path resolution

The returned variable "addr" should be checked instead of the variable "ep" in
the function acm_svr_resolve_path() when query parameters are given in a path
record (eg, slid/dlid, sgid/dgid, etc).

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: define prov_lib_path as a char array
Kaike Wan [Mon, 7 Jul 2014 17:36:25 +0000 (10:36 -0700)]
ibacm: define prov_lib_path as a char array

This patch fixes a segfault error when the option file defines the provider
lib path. The variable prov_lib_path should be a buffer (char array) instead
of a char pointer. This allows a string to be copied into it during option
parsing.

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm/prov: export a function to increment performance counters
Kaike Wan [Fri, 20 Jun 2014 15:55:23 +0000 (08:55 -0700)]
ibacm/prov: export a function to increment performance counters

Instead of exposing the combined counters directly, this patch exports a
function to providers to increment the combined counters. This offers better
encapsulation and avoids exposing the private type atomic_t.

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm/prov: export a function to return config file name
Kaike Wan [Fri, 20 Jun 2014 15:54:43 +0000 (08:54 -0700)]
ibacm/prov: export a function to return config file name

Instead of exposing the ibacm configuration file name directly,
this patch exports a function to return the configuration file
name. This provides better encapsulation.

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: add provider man page
Kaike Wan [Fri, 20 Jun 2014 15:53:01 +0000 (08:53 -0700)]
ibacm: add provider man page

This patch adds the man page for the provider interface.

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: update man page
Kaike Wan [Fri, 20 Jun 2014 15:53:51 +0000 (08:53 -0700)]
ibacm: update man page

This patch updates the ibacm man page after the introduction
of the provider interface.

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: add provider man page prov
Kaike Wan [Mon, 16 Jun 2014 16:29:39 +0000 (09:29 -0700)]
ibacm: add provider man page

This patch adds the man page for the provider interface.

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
6 years agoib_acme: update man page
Kaike Wan [Mon, 16 Jun 2014 16:29:26 +0000 (09:29 -0700)]
ib_acme: update man page

Update the ib_acme man page.

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
6 years agoibacm: update man page
Kaike Wan [Mon, 16 Jun 2014 16:29:18 +0000 (09:29 -0700)]
ibacm: update man page

This patch updates the ibacm man page after the introduction of the provider
interface.

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
6 years agoib_acme: Add support for endpoint specific performance query.
Kaike Wan [Fri, 13 Jun 2014 19:35:02 +0000 (12:35 -0700)]
ib_acme: Add support for endpoint specific performance query.

Adds the following queries to ib_acme tool:

  ib_acme -P N
    to query the performance for a specific endpoint N (N = 1, 2, ...);
  ib_acme -P all
    to query the performance for all endpoints;
  ib_acme -f [n | i] -s [src name | ip addr] -P s
    to query the performance for a specific endpoint with the given address.

in addition to the normal query for overal (combined) performance:

  ib_acme -P
  ib_acme -P col

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: support performance query by endpoint index
Kaike Wan [Fri, 13 Jun 2014 19:32:07 +0000 (12:32 -0700)]
ibacm: support performance query by endpoint index

Enable a consumer application to query the ibacm service for
performance data for an endpoint with an index.  Provide a mechanism
to retrieve performance data for all endpoints through a loop.

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoib_acme: enumerate endpoints
Kaike Wan [Fri, 13 Jun 2014 19:30:36 +0000 (12:30 -0700)]
ib_acme: enumerate endpoints

Add support to enumerate a specific endpoint or all endpoints
local to an ibacm service in the tool ib_acme.

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: enumerate endpoint
Kaike Wan [Fri, 13 Jun 2014 19:28:25 +0000 (12:28 -0700)]
ibacm: enumerate endpoint

This patch enables a consumer application to enumerate all
local endpoints at a host served by the ibacm daemon. An endpoint
index will be provided to the ibacm core for each query. If the
index is out of range, an error will be returned.

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: remove unnecessary locking
Kaike Wan [Thu, 12 Jun 2014 16:19:22 +0000 (09:19 -0700)]
ibacm: remove unnecessary locking

Since the event handler is not an independent thread anymore,
there is no need to lock when adding/removing an address
to/from an endpoint or adding/removing an endpoint to/from a port.

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: Add support for multiple subnets per provider
Kaike Wan [Wed, 11 Jun 2014 17:45:22 +0000 (10:45 -0700)]
ibacm: Add support for multiple subnets per provider

Enable a provider to manage multiple subnets. That is, a provider
can be assigned to multiple subnets.

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm/prov: Add a gid cache for each port
Kaike Wan [Wed, 11 Jun 2014 17:45:09 +0000 (10:45 -0700)]
ibacm/prov: Add a gid cache for each port

The attempt is to eliminate frequent call of ibv_query_gid().

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm/prov: Call provider remove_address with address context only
Kaike Wan [Tue, 10 Jun 2014 20:04:02 +0000 (13:04 -0700)]
ibacm/prov: Call provider remove_address with address context only

This patch enables the core to call remove_address() with only
provider address context so that this interface call is similar
to those for closing endpoint/port/device.

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: Fix a log option error
Kaike Wan [Tue, 10 Jun 2014 20:02:37 +0000 (13:02 -0700)]
ibacm: Fix a log option error

Also log the addr and options file so that the user
clearly knows the file location.

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: Add support for endpoint performance query
Kaike Wan [Mon, 9 Jun 2014 23:52:47 +0000 (16:52 -0700)]
ibacm: Add support for endpoint performance query

Add support for to query endpoint-specific counters with a
source address.  We currently support querying by IPv4/6
addressing.  Endpoint specific queries are useful for analyzing
and debugging different provider performance.

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm/prov: add endpoint specific counters.
Kaike Wan [Mon, 9 Jun 2014 23:37:35 +0000 (16:37 -0700)]
ibacm/prov: add endpoint specific counters.

Add endpoint-specific counters.  Add a counter array to the
endpoint in the default provider and increment it where needed.

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: Handle pkey/lid/gid change
Kaike Wan [Mon, 9 Jun 2014 22:43:27 +0000 (15:43 -0700)]
ibacm: Handle pkey/lid/gid change

When pkey/lid/gid changes, the endpoint and their addresses will be affected.
As a result, all endpoints will be removed and then added again.
Theoretically, it could selectively modify only those affected endpoints when
key changes. However, since pkey index, which is associated with a QP, may be
changed, the implementation could be very complicated.

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm/prov: Change the provider to use the core SA access functions
Kaike Wan [Mon, 9 Jun 2014 21:38:19 +0000 (14:38 -0700)]
ibacm/prov: Change the provider to use the core SA access functions

This patch enables the default provider to access the SA through
helper functions in the core instead of the verbs interface.
Major changes:

(1) Join the multicast group through the new core SA interface;
(2) Get path record through the new core SA interface;
(3) Remove the code to open umad interface in the default provider;
(4) Remove the sa_depth option in the default provider.

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: Centralize provider SA access in core.
Sean Hefty [Wed, 4 Jun 2014 18:39:36 +0000 (11:39 -0700)]
ibacm: Centralize provider SA access in core.

This patch is the first of a series to centralize the SA access for all
providers.

Here is the description of the approach:
(1) A provider will call the core to allocate a request and initialize
    the request (including the callback function);
(2) Provider calls the core to send the SA request;
(3) The core SA handler thread will poll for any SA response;
(4) When a SA response is received, the core SA handler will find the
    matching request and call the corresponding provider callback
    function;
(5) The provider callback will handle the SA response and free the
    SA request.

The approach has the following advantages:
(1) No code duplication in the provider for SA access;
(2) No need for a separate thread in the provider to wait for SA response.

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm/prov: Free send messages in the timeout list
Kaike Wan [Wed, 4 Jun 2014 00:05:51 +0000 (17:05 -0700)]
ibacm/prov: Free send messages in the timeout list

The send messages on the timeout list are not freed
when they are removed from the list.

Signed-off-by: Kaike Wan (kaike.wan@intel.com)
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoib_acme: Update option file to display configure path
Sean Hefty [Tue, 3 Jun 2014 23:57:16 +0000 (16:57 -0700)]
ib_acme: Update option file to display configure path

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: Assign a provider to a port.
Kaike Wan [Tue, 3 Jun 2014 22:44:52 +0000 (15:44 -0700)]
ibacm: Assign a provider to a port.

The assignment is based on a port's subnet_prefix. It is
assumed that all ports on a subnet partition should be
managed by one provider. The assignment is done through
the configuration file.

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm/prov: split the acm.c into core and provider.
Kaike Wan [Tue, 3 Jun 2014 22:13:25 +0000 (15:13 -0700)]
ibacm/prov: split the acm.c into core and provider.

The provider is located under prov/acmp/src/.
In addition, the init, exit, and prov_query functions are added for the
provider.

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: Add umad_done to match umad_init.
Kaike Wan [Tue, 3 Jun 2014 18:46:49 +0000 (11:46 -0700)]
ibacm: Add umad_done to match umad_init.

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: Define config, bin, and prov lib path in configure.ac file.
Kaike Wan [Tue, 3 Jun 2014 18:46:22 +0000 (11:46 -0700)]
ibacm: Define config, bin, and prov lib path in configure.ac file.

The reason behind this change is to make the ibacm
module works properly under normal build (./autogen.sh, ./configure,
make, make
install) and rpm build (./autogen.sh, ./configure, make dist, rpmbuild).
Without this change, the rpmbuild will not work properly:
 (1) For normal build, the files will be installed under:
          /usr/local/sbin: ibacm
          /usr/local/bin: ib_acme
          /usr/local/etc/rdma/: configuration files.

 (2) For rpmbuild, the files will be installed under:

          /usr/sbin: ibacm
          /usr/bin: ib_acme
          /etc/rdma/: configuration files.

The configure.ac will be used in both cases to set up the path correctly.
This is necessary when we need to load the provider library from the
appropriate path.

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm/prov: Move support_ips_in_addr_cfg from prov to core
Kaike Wan [Fri, 16 May 2014 03:48:41 +0000 (20:48 -0700)]
ibacm/prov: Move support_ips_in_addr_cfg from prov to core

This config option belongs to the core, not the provider.

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: Add functions to load/unload provider.
Kaike Wan [Fri, 16 May 2014 01:50:18 +0000 (18:50 -0700)]
ibacm: Add functions to load/unload provider.

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
6 years agoibacm: Export variables and functions
Kaike Wan [Thu, 15 May 2014 21:03:23 +0000 (14:03 -0700)]
ibacm: Export variables and functions

This enables the core to export variables and functions
to share with providers.

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: Change acm_query_response to take the response message
Sean Hefty [Thu, 15 May 2014 21:08:04 +0000 (14:08 -0700)]
ibacm: Change acm_query_response to take the response message

acm_query_response should take as input the actual response
message to send, not the request message.  The provider may have
already formatted a response message, and the core should not
override it.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm/prov: Make the retry handler thread cancellable.
Kaike Wan [Thu, 15 May 2014 20:41:47 +0000 (13:41 -0700)]
ibacm/prov: Make the retry handler thread cancellable.

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm/prov: Move acm_mad.h from src/ to include/
Kaike Wan [Thu, 15 May 2014 20:40:35 +0000 (13:40 -0700)]
ibacm/prov: Move acm_mad.h from src/ to include/

This prepares the sharing of the acm_mad.h between the core and the provider.

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: Split acm_resolve_response to eliminate reference to acmp_dest in the core.
Kaike Wan [Thu, 15 May 2014 19:41:33 +0000 (12:41 -0700)]
ibacm: Split acm_resolve_response to eliminate reference to acmp_dest in the core.

The structure acmp_dest should only be referenced in the provider.

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm/prov: Pass addr_context into provider resolve/query calls
Kaike Wan [Thu, 15 May 2014 19:18:02 +0000 (12:18 -0700)]
ibacm/prov: Pass addr_context into provider resolve/query calls

The addr_context is a better candidate to represent the
source address than the ep_context.

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm/prov: add add_address and remove_address functions.
Sean Hefty [Thu, 15 May 2014 18:43:48 +0000 (11:43 -0700)]
ibacm/prov: add add_address and remove_address functions.

The full set of provider device/port/endpoint/address init/shutdown paths is
now separate from that of the core.

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: Separate device/port/ep init/shutdown paths for core and provider.
Kaike Wan [Wed, 14 May 2014 00:21:46 +0000 (17:21 -0700)]
ibacm: Separate device/port/ep init/shutdown paths for core and provider.

The provider device and port will not be opened until the core port is up.
When a core ep is added, a corresponding provider ep will be opened.
Name/address addition/deletion should be addressed next.

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: Rename acm_client as acmc_client
Kaike Wan [Wed, 14 May 2014 00:20:57 +0000 (17:20 -0700)]
ibacm: Rename acm_client as acmc_client

This change is consistent with the ibacm core naming convention.

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: Rename acm_addr as acmc_addr
Kaike Wan [Wed, 14 May 2014 00:20:28 +0000 (17:20 -0700)]
ibacm: Rename acm_addr as acmc_addr

This change is consistent with the ibacm core naming convention.

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: Rename acm_ep as acmc_ep
Kaike Wan [Wed, 14 May 2014 00:19:53 +0000 (17:19 -0700)]
ibacm: Rename acm_ep as acmc_ep

This change is consistent with other core structure naming convention.

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: Rename acm_port as acmc_port
Kaike Wan [Wed, 14 May 2014 00:19:07 +0000 (17:19 -0700)]
ibacm: Rename acm_port as acmc_port

This name change reserves struct acm_port for use by the provider interface.

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: Rename acm_device as acmc_device
Kaike Wan [Wed, 14 May 2014 00:18:30 +0000 (17:18 -0700)]
ibacm: Rename acm_device as acmc_device

This intends to reserve the struct acm_device for use by the provider interface
only.

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: port/ep cleanup after shutdown
Kaike Wan [Wed, 14 May 2014 00:12:49 +0000 (17:12 -0700)]
ibacm: port/ep cleanup after shutdown

This patch adds functions to close provider port and endpoint after the core
port and endpoint are closed. The default provider resources are not freed to
avoid synchronization issues with the provider completion thread and the retry
handler.

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm/prov: acquire sa_dest lock before accessing SA
Kaike Wan [Wed, 14 May 2014 00:00:55 +0000 (17:00 -0700)]
ibacm/prov: acquire sa_dest lock before accessing SA

Instead of acquiring port lock, any access to SA should acquire the port's
sa_dest lock to avoid nested locking scheme.

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: Open a provider ep only if an address is assigned to the core ep.
Kaike Wan [Tue, 13 May 2014 23:50:45 +0000 (16:50 -0700)]
ibacm: Open a provider ep only if an address is assigned to the core ep.

The function acm_assign_ep_names() should not return 0 when there is no valid
address assigned to the core ep. In this case, the provider's
ep should not be up (or acmp_ep_up() should not be called). However, when
there is at least one address assigned, 0 should be returned so that the
core endpoint and the provider endpoint should be created.

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm/prov: Re-initialize the multicast dest before joining the multicast group
Kaike Wan [Mon, 5 May 2014 18:43:20 +0000 (11:43 -0700)]
ibacm/prov: Re-initialize the multicast dest before joining the multicast group

If the provider has already registered for a multicast group, it should free
the address handle before reregistering again.

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoIbacm/prov: Rename provider related option defines and functions.
Kaike Wan [Wed, 16 Apr 2014 06:38:52 +0000 (23:38 -0700)]
Ibacm/prov: Rename provider related option defines and functions.

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: Fix the incorrect return type of acm_convert_addr_preload.
Kaike Wan [Wed, 16 Apr 2014 06:37:10 +0000 (23:37 -0700)]
ibacm: Fix the incorrect return type of acm_convert_addr_preload.

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm/prov: Rename provider specific structures and variables
Kaike Wan [Wed, 16 Apr 2014 06:35:23 +0000 (23:35 -0700)]
ibacm/prov: Rename provider specific structures and variables

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm/prov: Rename some provider related functions
Kaike Wan [Wed, 16 Apr 2014 06:09:13 +0000 (23:09 -0700)]
ibacm/prov: Rename some provider related functions

Help identify functions that pertain to the default ACM
provider, rather than the core by using the acmp name
prefix.

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm/prov: Separate provider config options from those of core
Kaike Wan [Wed, 16 Apr 2014 06:04:39 +0000 (23:04 -0700)]
ibacm/prov: Separate provider config options from those of core

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: Rename acm_dest as acmp_dest
Kaike Wan [Wed, 16 Apr 2014 05:54:36 +0000 (22:54 -0700)]
ibacm: Rename acm_dest as acmp_dest

The 'destination' structure is only used by the ACM
provider, not the ACM core.  The rename helps
identify its usage.

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: Eliminate device event handler thread.
Kaike Wan [Wed, 16 Apr 2014 05:18:53 +0000 (22:18 -0700)]
ibacm: Eliminate device event handler thread.

The event handler thread creates synchronization issues
with the client request, especially when address/endpoint/port
is removed or shut down. This patch moves the device event
handling code into acm_server() so that event and client
reqest are serialized to avoid any potential synchronization
issues.  We also lose the overhead of an additional thread.

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: Define separate structures for acm devices
Kaike Wan [Tue, 15 Apr 2014 23:44:26 +0000 (16:44 -0700)]
ibacm: Define separate structures for acm devices

This is part of the preparation for adding provider
support.

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: Eliminate compiling warning "ignoring return value"
Kaike Wan [Tue, 15 Apr 2014 23:27:10 +0000 (16:27 -0700)]
ibacm: Eliminate compiling warning "ignoring return value"

Those warnings are produced when building rpm with
"rpmbuild -ta ibacm-1.0.8.tar.gz" after creating the
tar file with "make dist".

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: Provide correct addr_len for IPv6
Sean Hefty [Tue, 15 Apr 2014 22:25:12 +0000 (15:25 -0700)]
ibacm: Provide correct addr_len for IPv6

When reading in addresses from the address file, the
address string is converted into either an IPv4, IPv6,
or hostname 'address'.  In the case of IPv6, the length
of the address is set to the maximum supported value.
This can result in extra bytes being set beyond the
actual IPv6 address, which are then copied into the
endpoint address.  Fix this by setting the size
of the IPv6 correctly.  When the address is copied into
the endpoint address, the extra bytes are then ignored.

Problem reported by: Kaike Wan <kaike.wan@intel.com>

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: Define separate structures for acm ports
Sean Hefty [Fri, 21 Mar 2014 08:21:01 +0000 (01:21 -0700)]
ibacm: Define separate structures for acm ports

Define a port structure for use by the ibacm core layer.
The core endpoints will be linked to this port structure.

Link struct acm_ep off struct acm_port and struct acmp_ep
off struct acmp_port.  Separate the code accessing the
port structures into core or provider specific sections,
and have the functions reference the correct port
structure.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: Convert ibacm server code to use acm_ep
Sean Hefty [Fri, 21 Mar 2014 07:33:14 +0000 (00:33 -0700)]
ibacm: Convert ibacm server code to use acm_ep

The acm server code is part of the acm core.  It should
only use the core struct acm_ep and not the provider
acmp_ep.  This removes most uses of the provider ep
structure from the core server processing.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: Convert acm_addr_index call to return address
Sean Hefty [Sat, 22 Mar 2014 07:07:40 +0000 (00:07 -0700)]
ibacm: Convert acm_addr_index call to return address

Rename acm_addr_index to acm_addr_lookup and have it
return the acm_address that matches the source address,
rather than the index that the address is located.
The index is an internal limitation of the acm core
and the acm_address is usable by the providers.

Change acm_addr_lookup to take the endpoint as input
in place of the provider ep.  acm_addr_lookup is
intended to be exported by the acm core.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: Divide struct acmp_ep into two structures
Sean Hefty [Fri, 21 Mar 2014 06:08:14 +0000 (23:08 -0700)]
ibacm: Divide struct acmp_ep into two structures

Struct acmp_ep contains data that is intended for both
the core and provider.  Split out the core data from
the structure into its own sub-structure.

The core structure will own the acm_endpoint allocation
and addressing.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: Move ep state check
Sean Hefty [Fri, 21 Mar 2014 06:32:09 +0000 (23:32 -0700)]
ibacm: Move ep state check

acm_get_port_ep() checks that the state of the endpoint
is ready.  If not, it is skipped in the search for a
matching address.

The state of the endpoint is a property that belongs to
the provider, not the acm core.  Move the state check
into the provider specific code.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: Define struct acm_address
Sean Hefty [Fri, 21 Mar 2014 03:39:45 +0000 (20:39 -0700)]
ibacm: Define struct acm_address

Endpoint addressing information will be shared between the
core and provider layers.  Separate out the addressing
data into its own structure.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: Add basic provider framework
Sean Hefty [Mon, 24 Mar 2014 05:27:28 +0000 (22:27 -0700)]
ibacm: Add basic provider framework

Define the provider interface for handling path record query
and route resolution requests.  This will define the boundary
between the provider and the core layer.

Update the core functions to invoke the provider interfaces
used for processing client requests.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: Define provider endpoint identifier
Sean Hefty [Mon, 24 Mar 2014 06:24:54 +0000 (23:24 -0700)]
ibacm: Define provider endpoint identifier

Introduce a header file that will be included by providers that
will define the interface between the ibacm core layer and the
providers.

Define an endpoint identifier that is associated with a set of
addresses.  Providers will be given this structure in requests.
The endpoint is defined as a <device, port, pkey> tuple, though
it may be used with "any" values in order to identify any
port on a device and/or any pkey on a port.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: Change client parameter to req id in resp calls
Sean Hefty [Mon, 24 Mar 2014 05:11:58 +0000 (22:11 -0700)]
ibacm: Change client parameter to req id in resp calls

The ibacm core will manage the client connection.  Providers
should not interact with clients directly.  Instead, the core
will give providers a request id with each request that will be
returned to the core layer when the request has completed.

Change the client field in struct acm_request to an id field,
and update the provider identified functions to use the id
in place of accesing the client directly.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: Rename data structures
Sean Hefty [Mon, 24 Mar 2014 04:49:13 +0000 (21:49 -0700)]
ibacm: Rename data structures

Provider support will require separate definitions for the
device, port, and endpoint structures between the acm
core and the existing provider.  The current struct
acm_port and struct acm_ep contain fields that are
mainly used by what will become the provider.  Rename
these structures to have an acmp prefix to indicate
that the provider will own their use.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: Function renames
Sean Hefty [Mon, 24 Mar 2014 01:19:29 +0000 (18:19 -0700)]
ibacm: Function renames

Supporting providers will require existing functionality
to become part of the acm core function or a provider
operation.

Any functionality that will migrate into the provider code
is renamed with the 'acmp' prefix.  A couple of core
functions are also renamed to indicate that they will
become callback handlers and exposed directly to the
providers.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: Fix invalid memory dereference in acm_process_join_resp
Sean Hefty [Wed, 9 Apr 2014 19:04:19 +0000 (12:04 -0700)]
ibacm: Fix invalid memory dereference in acm_process_join_resp

If a join request fails, the dest pointer may not be initialized.
This can result in the ibacm daemon crashing.  Fix the crash and
ensure that the multicast state is set correctly in case the
join fails by initializing the state to ACM_INIT before sending
the join request.

Problem reported by: Kaike Wan <kaike.wan@intel.com>

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: Restructure acm_port_join
Sean Hefty [Sat, 22 Mar 2014 07:42:54 +0000 (00:42 -0700)]
ibacm: Restructure acm_port_join

Create a subroutine to process joining a single
endpoint that can be called directly in place of
joining all endpoints on a port.

This will make it easier to handle future changes that
affect a single endpoint, such as a pkey change.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: Store the base GID with acm_port
Sean Hefty [Sat, 22 Mar 2014 07:37:19 +0000 (00:37 -0700)]
ibacm: Store the base GID with acm_port

Record the base GID of a port with acm_port.  This avoids
needing to query again for it later.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: Reset endpoint state on error
Sean Hefty [Fri, 21 Mar 2014 06:23:06 +0000 (23:23 -0700)]
ibacm: Reset endpoint state on error

An endpoint will be set to the ACM_READY state after
joining its multicast group.  If we later receive a
reregister event or port down followed by port up and
try to join the group again but fail, we will leave the
endpoint state as READY, rather than reset it back to INIT.

To fix, always set the mc_dest state to ACM_INIT on
any failure.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: Change base endpoint name
Sean Hefty [Fri, 21 Mar 2014 03:59:58 +0000 (20:59 -0700)]
ibacm: Change base endpoint name

Endpoints are given a string identifer (base name) that matches
the first address assigned to the endpoint.  Store the endpoint
string identifier separately from the address name, and identify
the endpoint using the device name, port, and pkey.

The endpoint identifier is only used for logging purposes.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: Record index for source and destination addresses
Sean Hefty [Wed, 19 Mar 2014 22:45:48 +0000 (15:45 -0700)]
ibacm: Record index for source and destination addresses

When processing a resolve route message, record what
index the source and destination addresses were located
at directly into the message.  This replaces returning
pointers to the source and destination address that must
then be passed around.

When provider plug-in support is added in subsequent
patches, this will avoid pointer exchanges between the
core and provider code.

Fix a minor issue where the src_out field may be
uninitialized (value read from client message).  Src_out
now becomes a boolean value, rather than an index.  The
actual location for the output is specified as an index.

This change cleanups the call to acm_svr_select_src,
which selects a source address.  It is only called when
a source is needed, which is explicitly determined by
seeing if src_out is set, rather than relying on a zero
src type field.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: Relocate client refcnt
Sean Hefty [Thu, 20 Mar 2014 05:14:31 +0000 (22:14 -0700)]
ibacm: Relocate client refcnt

Adjust when we take a reference on the client connection.
Increment the client reference when we begin processing
the client's request, and release it when the response
has been sent.

The client reference will no longer be associated with the
lifetime of any underlying acm_request structure.  This change
will allow the acm core to control the client reference
count when we move to a provider plug-in model in subsequent
patches.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: Eliminate strict aliasing compiler warnings
Sean Hefty [Sat, 22 Mar 2014 03:30:17 +0000 (20:30 -0700)]
ibacm: Eliminate strict aliasing compiler warnings

Use local variables and memcpy to defeat the
compiler warning: dereferencing type-punned
pointer will break strict-aliasing rules

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: Rename client array
Sean Hefty [Thu, 20 Mar 2014 04:45:42 +0000 (21:45 -0700)]
ibacm: Rename client array

Rename the client array to client_array, to make it easier
to distinguish between the array and local variables, which
are also named client.

And, hey, this found the bug in the previous patch.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: Release the refcnt on the correct client
Sean Hefty [Thu, 20 Mar 2014 06:00:56 +0000 (23:00 -0700)]
ibacm: Release the refcnt on the correct client

Release the reference on the client that we're referencing,
and not the one at the front of the array.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoMerge branch 'ira-name-res3'
Sean Hefty [Tue, 8 Apr 2014 21:29:34 +0000 (14:29 -0700)]
Merge branch 'ira-name-res3'

6 years agoibacm: by default remove processing of IP's from ibacm_addr.cfg
Ira Weiny [Fri, 4 Apr 2014 00:15:05 +0000 (20:15 -0400)]
ibacm: by default remove processing of IP's from ibacm_addr.cfg

support_ips_in_addr_cfg option in config file can turn this back on if wanted.

Signed-off-by: Ira Weiny <ira.weiny@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: ib_acme remove IP addresses from ibacm_addr.cfg file generation
Ira Weiny [Wed, 26 Mar 2014 00:40:37 +0000 (20:40 -0400)]
ibacm: ib_acme remove IP addresses from ibacm_addr.cfg file generation

Signed-off-by: Ira Weiny <ira.weiny@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: Fix handling of aliased IPoIB devices
Ira Weiny [Tue, 25 Mar 2014 23:21:46 +0000 (19:21 -0400)]
ibacm: Fix handling of aliased IPoIB devices

ibX:Y devices don't have sysfs files directly.  They use the "base" interface
of ibX.  The ioctl calls however include the full aliased name.

Netlink does not have this problem as the interface name is reported as it
appears in sysfs.

Signed-off-by: Ira Weiny <ira.weiny@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: Add/remove addr's in EP's when added/removed from the system.
Ira Weiny [Fri, 21 Mar 2014 20:26:05 +0000 (16:26 -0400)]
ibacm: Add/remove addr's in EP's when added/removed from the system.

This builds on the previous patch by reacting to the IP address changes
monitored there.

Signed-off-by: Ira Weiny <ira.weiny@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: Add Netlink socket to monitor IP address changes
Ira Weiny [Fri, 21 Mar 2014 18:39:34 +0000 (14:39 -0400)]
ibacm: Add Netlink socket to monitor IP address changes

Currently only reports events to the log.

Signed-off-by: Ira Weiny <ira.weiny@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
6 years agoibacm: read system IP's into endpoints at startup
Ira Weiny [Sat, 22 Mar 2014 01:22:14 +0000 (21:22 -0400)]
ibacm: read system IP's into endpoints at startup

ibacm_addr.cfg is read after system is read which can add endpoints which are
not active at start up.

ibacm_addr.cfg can still specify names for end points

Signed-off-by: Ira Weiny <ira.weiny@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>