Vendor-specific attributes for uDAPL
There are a few vendor-specific attributes supported in AIX®. The attribute names are delayed_ack_supported , vendor_extension, vendor_ext_version, debug_query and debug_modify.
delayed_ack_supported
The AIX provider for the InfiniBand (IB) transport includes a vendor-specific interface adapter (IA) attribute named delayed_ack_supported. The value of this attribute is either true or false. When true, endpoints associated with this IA® have a modifiable provider-specific attribute named delayed_ack. When the delayed_ack_supported attribute is false, an endpoint's delayed_ack provider-specific attribute cannot be modified. The default value of an endpoint's delayed_ack attribute is false. Setting it to true (via dat_ep_modify) enables the delayed ack feature of the underlying IB Host Channel Adapter (HCA) for the specific IB queue pair associated with the endpoint. This hardware feature is not implemented by all HCAs, and is therefore not available for all IAs. Enabling the feature causes the HCA to delay sending acknowledgement until a data transfer operation is visible in a server's system memory. This is a slightly stronger semantic than what is provided for in the IB spec, at the potential cost of a very small latency increase.
vendor_extension, vendor_ext_version, debug_query and debug_modify
For debugging purposes, the uDAPL libraries support AIX system trace. The initial trace level can be modified using the environment variables DAT_TRACE_LEVEL and DAPL_TRACE_LEVEL. To change these trace levels dynamically via API, we provide dynamic trace level support on AIX. To verify if the library has dynamic trace level support, applications can query for the vendor-specific IA attribute, vendor_extension. On return from query, the presence of the vendor_extension attribute indicates dynamic trace level support. The value of the attribute is set to true; but irrespective of that, presence of the attribute indicates the support. When vendor_extension attribute is present, applications can get the function pointers to dat_trclvl_query() and dat_trclvl_modify() by querying for the vendor-specific IA attributes, debug_query and debug_modify. The value of these attributes will have the pointer to the corresponding functions. To make this vendor_extension interface extensible for future usage, we have another vendor-specific IA attribute, vendor_ext_version. Since we will support only one version right now, the value of this attribute will be set to 1.0. If the vendor_extension attribute does not exist, applications cannot modify the trace levels dynamically.
An example of how to manipulate these attributes is included in the uDAPL sample code installed with the AIX implementation.