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>
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).
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>
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.
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>
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.
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>
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.
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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:
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>
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.