DAT_IA_QUERY(3DAT) Direct Access Transport Library Functions NNAAMMEE dat_ia_query - query an IA SSYYNNOOPPSSIISS cc [ _f_l_a_g... ] _f_i_l_e... --llddaatt [ _l_i_b_r_a_r_y... ] #include DAT_RETURN dat_ia_query ( IN DAT_IA_HANDLE _i_a___h_a_n_d_l_e, OUT DAT_EVD_HANDLE *_a_s_y_n_c___e_v_d___h_a_n_d_l_e, IN DAT_IA_ATTR_MASK _i_a___a_t_t_r___m_a_s_k, OUT DAT_IA_ATTR *_i_a___a_t_t_r_i_b_u_t_e_s, IN DAT_PROVIDER_ATTR_MASK _p_r_o_v_i_d_e_r___a_t_t_r___m_a_s_k, OUT DAT_PROVIDER_ATTR *_p_r_o_v_i_d_e_r___a_t_t_r_i_b_u_t_e_s ) PPAARRAAMMEETTEERRSS _i_a___h_a_n_d_l_e Handle for an open instance of an IA. _a_s_y_n_c___e_v_d___h_a_n_d_l_e Handle for an Event Dispatcher for asynchronous events generated by the IA. _i_a___a_t_t_r___m_a_s_k Mask for the _i_a___a_t_t_r_i_b_u_t_e_s. _i_a___a_t_t_r_i_b_u_t_e_s Pointer to a Consumer-allocated structure that the Provider fills with IA attributes. _p_r_o_v_i_d_e_r___a_t_t_r___m_a_s_k Mask for the _p_r_o_v_i_d_e_r___a_t_t_r_i_b_u_t_e_s. _p_r_o_v_i_d_e_r___a_t_t_r_i_b_u_t_e_s Pointer to a Consumer-allocated structure that the Provider fills with Provider attributes. DDEESSCCRRIIPPTTIIOONN The ddaatt__iiaa__qquueerryy(()) functions provides the Consumer with the IA parameters, as well as the IA and Provider attributes. Consumers pass in pointers to Consumer-allocated structures for the IA and Provider attributes that the Provider fills. The _i_a___a_t_t_r___m_a_s_k and _p_r_o_v_i_d_e_r___a_t_t_r___m_a_s_k parameters allow the Consumer to specify which attributes to query. The Provider returns values for requested attributes. The Provider can also return values for any of the other attributes. IInntteerrffaaccee AAddaapptteerr AAttttrriibbuutteess The IA attributes are common to all open instances of the IA. DAT defines a method to query the IA attributes but does not define a method to modify them. If IA is multiported, each port is presented to a Consumer as a separate IA. AAddaapptteerr nnaammee:: The name of the IA controlled by the Provider. The same as _i_a___n_a_m_e___p_t_r. VVeennddoorr nnaammee:: Vendor if IA hardware. HHWW vveerrssiioonn mmaajjoorr:: Major version of IA hardware. HHWW vveerrssiioonn mmiinnoorr:: Minor version of IA hardware. FFiirrmmwwaarree vveerrssiioonn mmaajjoorr:: Major version of IA firmware. FFiirrmmwwaarree vveerrssiioonn mmiinnoorr:: Minor version of IA firmware. IIAA__aaddddrreessss__ppttrr:: An address of the interface Adapter. MMaaxx EEPPss:: Maximum number of Endpoints that the IA can support. This covers all Endpoints in all states, including the ones used by the Providers, zero or more applications, and management. MMaaxx DDTTOOss ppeerr EEPP:: Maximum number of DTOs and RMR_binds that any Endpoint can support for a single direction. This means the maximum number of outstanding and in-progress Send, RDMA Read, RDMA Write DTOs, and RMR Binds at any one time for any Endpoint; and maximum number of outstanding and in-progress Receive DTOs at any one time for any Endpoint. MMaaxx iinnccoommiinngg RRDDMMAA RReeaaddss ppeerr EEPP:: Maximum number of RDMA Reads that can be outstanding per (connected) Endpoint with the IA as the target. MMaaxx oouuttggooiinngg RRDDMMAA RReeaaddss ppeerr EEPP:: Maximum number of RDMA Reads that can be outstanding per (connected) Endpoint with the IA as the originator. MMaaxx EEVVDDss:: Maximum number of Event Dispatchers that an IA can support. An IA cannot support an Event Dispatcher directly, but indirectly by Transport-specific Objects, for example, Completion Queues for Infinibandtm and VI. The Event Dispatcher Objects can be shared among multiple Providers and similar Objects from other APIs, for example, Event Queues for uDAPL. MMaaxx EEVVDD qquueeuuee ssiizzee:: Maximum size of the EVD queue supported by an IA. MMaaxx IIOOVV sseeggmmeennttss ppeerr DDTTOO:: Maximum entries in an IOV list that an IA supports. Notice that this number cannot be explicit but must be implicit to transport- specific Object entries. For example, for IB, it is the maximum number of scatter/gather entries per Work Request, and for VI it is the maximum number of data segments per VI Descriptor. MMaaxx LLMMRRss:: Maximum number of Local Memory Regions IA supports among all Providers and applications of this IA. MMaaxx LLMMRR bblloocckk ssiizzee:: Maximum contiguous block that can be registered by the IA. MMaacc LLMMRR VVAA:: Highest valid virtual address within the context of an LMR. Frequently, IAs on 32-bit architectures support only 32-bit local virtual addresses. MMaaxx PPZZss:: Maximum number of Protection Zones that the IA supports. MMaaxx MMTTUU ssiizzee:: Maximum message size supported by the IA MMaaxx RRDDMMAA ssiizzee:: Maximum RDMA size supported by the IA MMaaxx RRMMRRss:: Maximum number of RMRs an IA supports among all Providers and applications of this IA. MMaaxx RRMMRR ttaarrggeett aaddddrreessss:: Highest valid target address with the context of a local RMR. Frequently, IAs on 32-bit architectures support only 32-bit local virtual addresses. NNuumm ttrraannssppoorrtt aattttrriibbuutteess:: Number of transport-specific attributes. TTrraannssppoorrtt--ssppeecciiffiicc aattttrriibbuutteess:: Array of transport-specific attributes. Each entry has the format of DDAATT__NNAAMMEEDD__AATTTTRR, which is a structure with two elements. The first element is the name of the attribute. The second element is the value of the attribute as a string. NNuumm vveennddoorr aattttrriibbuutteess:: Number of vendor-specific attributes. VVeennddoorr--ssppeecciiffiicc aattttrriibbuutteess:: Array of vendor-specific attributes. Each entry has the format of DDAATT__NNAAMMEEDD__AATTTTRR, which is a structure with two elements. The first element is the name of the attribute. The second element is the value of the attribute as a string. DDAAPPLL PPrroovviiddeerr AAttttrriibbuutteess The provider attributes are specific to the open instance of the IA. DAT defines a method to query Provider attributes but does not define a method to modify them. PPrroovviiddeerr nnaammee:: Name of the Provider vendor. PPrroovviiddeerr vveerrssiioonn mmaajjoorr:: Major Version of uDAPL Provider. PPrroovviiddeerr vveerrssiioonn mmiinnoorr:: Minor Version of uDAPL Provider. DDAAPPLL AAPPII vveerrssiioonn mmaajjoorr:: Major Version of uDAPL API supported. DDAAPPLL AAPPII vveerrssiioonn mmiinnoorr:: Minor Version of uDAPL API supported. LLMMRR mmeemmoorryy ttyyppeess ssuuppppoorrtteedd:: Memory types that LMR Create supports for memory registration. This value is a union of LMR Memory Types DDAATT__MMEEMM__TTYYPPEE__VVIIRRTTUUAALL, DDAATT__MMEEMM__TTYYPPEE__LLMMRR, and DDAATT__MMEEMM__TTYYPPEE__SSHHAARREEDD__VVIIRRTTUUAALL that the Provider supports. All Providers must support the following Memory Types: DDAATT__MMEEMM__TTYYPPEE__VVIIRRTTUUAALL, DDAATT__MMEEMM__TTYYPPEE__LLMMRR, and DDAATT__MMEEMM__TTYYPPEE__SSHHAARREEDD__VVIIRRTTUUAALL. IIOOVV oowwnneerrsshhiipp:: An enumeration flag that specifies the ownership of the local buffer description (IOV list) after post DTO returns. The three values are as follows: o DDAATT__IIOOVV__CCOONNSSUUMMEERR indicates that the Consumer has the ownership of the local buffer description after a post returns. o DDAATT__IIOOVV__PPRROOVVIIDDEERR__NNOOMMOODD indicates that the Provider still has ownership of the local buffer description of the DTO when the post DTO returns, but the Provider does not modify the buffer description. o DDAATT__IIOOVV__PPRROOVVIIDDEERR__MMOODD indicates that the Provider still has ownership of the local buffer description of the DTO when the post DTO returns and can modify the buffer description. In any case, the Consumer obtains ownership of the local buffer description after the DTO transfer is completed and the Consumer is notified through a DTO completion event. QQOOSS ssuuppppoorrtteedd:: The union of the connection QOS supported by the Provider. CCoommpplleettiioonn ffllaaggss ssuuppppoorrtteedd:: The following values for the completion flag DDAATT__CCOOMMPPLLEETTIIOONN__FFLLAAGGSS are supported by the Provider: DDAATT__CCOOMMPPLLEETTIIOONN__SSUUPPPPRREESSSS__FFLLAAGG, DDAATT__CCOOMMPPLLEETTIIOONN__UUNNSSIIGGNNAALLLLEEDD__FFLLAAGG, DDAATT__CCOOMMPPLLEETTIIOONN__SSOOLLIICCIITTEEDD__WWAAIITT__FFLLAAGG, and DDAATT__CCOOMMPPLLEETTIIOONN__BBAARRRRIIEERR__FFEENNCCEE__FFLLAAGG. TThhrreeaadd ssaaffeettyy:: Provider Library thread safe or not. The Provider Library is not required to be thread safe. MMaaxx pprriivvaattee ddaattaa ssiizzee:: Maximum size of private data the Provider supports. This value is at least 64 bytes. MMuullttiippaatthhiinngg ssuuppppoorrtt:: Capability of the Provider to support Multipathing for connection establishment. EEPP ccrreeaattoorr ffoorr PPSSPP:: Indicator for who can create an Endpoint for a Connection Request. For the Consumer it is DDAATT__PPSSPP__CCRREEAATTEESS__EEPP__NNEEVVEERR. For the Provider it is DDAATT__PPSSPP__CCRREEAATTEESS__EEPP__AALLWWAAYYSS. For both it is DDAATT__PPSSPP__CCRREEAATTEESS__EEPP__IIFFAASSKKEEDD. This attribute is used for Public Service Point creation. PPZZ ssuuppppoorrtt:: Indicator of what kind of protection the Provider's PZ provides. OOppttiimmaall BBuuffffeerr AAlliiggnnmmeenntt:: Local and remote DTO buffer alignment for optimal performance on the Platform. The DDAATT__OOPPTTIIMMAALL__AALLIIGGNNMMEENNTT must be divisible by this attribute value. The maximum allowed value is DDAATT__OOPPTTIIMMAALL__AALLIIGGNNMMEENNTT, or 256. EEVVDD ssttrreeaamm mmeerrggiinngg ssuuppppoorrtt:: A 2D binary matrix where each row and column represent an event stream type. Each binary entry is 1 if the event streams of its row and column can be fed to the same EVD, and 0 otherwise. More than two different event stream types can feed the same EVD if for each pair of the event stream types the entry is 1. The Provider should support merging of all event stream types. The Consumer should check this attribute before requesting an EVD that merges multiple event stream types. NNuumm pprroovviiddeerr aattttrriibbuutteess:: Number of Provider-specific attributes. PPrroovviiddeerr--ssppeecciiffiicc aattttrriibbuutteess:: Array of Provider-specific attributes. Each entry has the format of DDAATT__NNAAMMEEDD__AATTTTRR, which is a structure with two elements. The first element is the name of the attribute. The second element is the value of the attribute as a string. RREETTUURRNN VVAALLUUEESS DDAATT__SSUUCCCCEESSSS The operation was successful. DDAATT__IINNVVAALLIIDD__PPAARRAAMMEETTEERR Invalid parameter; DDAATT__IINNVVAALLIIDD__HHAANNDDLLEE Invalid DAT handle; ia_handle is invalid. AATTTTRRIIBBUUTTEESS See aattttrriibbuutteess(5) for descriptions of the following attributes: +--------------------+---------------------------+ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | +--------------------+---------------------------+ |Interface Stability | Standard: uDAPL, 1.1, 1.2 | +--------------------+---------------------------+ |MT-Level | Safe | +--------------------+---------------------------+ SSEEEE AALLSSOO lliibbddaatt(3LIB), aattttrriibbuutteess(5) July 16, 2004 DAT_IA_QUERY(3DAT)