Generated from ib_uvp.h with ROBODoc v3.2.3 on Sat Jan 18 07:05:16 2003
TABLE OF CONTENTS
- UAL_UVP_Interface/Overview user-mode Verbs
- user-mode Verbs/unsupported functions
- user-mode Verbs/uvp_bind_mw
- user-mode Verbs/uvp_enable_cq_notify
- user-mode Verbs/uvp_err_handler
- user-mode Verbs/uvp_get_interface
- user-mode Verbs/uvp_interface_t
- user-mode Verbs/uvp_poll_cq
- user-mode Verbs/uvp_post_allocate_pd
- user-mode Verbs/uvp_post_allocate_rdd
- user-mode Verbs/uvp_post_attach_mcast
- user-mode Verbs/uvp_post_close_ca
- user-mode Verbs/uvp_post_create_av
- user-mode Verbs/uvp_post_create_cq
- user-mode Verbs/uvp_post_create_eec
- user-mode Verbs/uvp_post_create_mw
- user-mode Verbs/uvp_post_create_qp
- user-mode Verbs/uvp_post_deallocate_pd
- user-mode Verbs/uvp_post_deallocate_rdd
- user-mode Verbs/uvp_post_deregister_mr
- user-mode Verbs/uvp_post_destroy_av
- user-mode Verbs/uvp_post_destroy_cq
- user-mode Verbs/uvp_post_destroy_eec
- user-mode Verbs/uvp_post_destroy_mw
- user-mode Verbs/uvp_post_destroy_qp
- user-mode Verbs/uvp_post_detach_mcast
- user-mode Verbs/uvp_post_modify_av
- user-mode Verbs/uvp_post_modify_ca
- user-mode Verbs/uvp_post_modify_eec
- user-mode Verbs/uvp_post_modify_mr
- user-mode Verbs/uvp_post_modify_qp
- user-mode Verbs/uvp_post_open_ca
- user-mode Verbs/uvp_post_query_av
- user-mode Verbs/uvp_post_query_ca
- user-mode Verbs/uvp_post_query_cq
- user-mode Verbs/uvp_post_query_eec
- user-mode Verbs/uvp_post_query_mr
- user-mode Verbs/uvp_post_query_mw
- user-mode Verbs/uvp_post_query_qp
- user-mode Verbs/uvp_post_recv
- user-mode Verbs/uvp_post_register_mr
- user-mode Verbs/uvp_post_register_smr
- user-mode Verbs/uvp_post_resize_cq
- user-mode Verbs/uvp_post_send
- user-mode Verbs/uvp_pre_allocate_pd
- user-mode Verbs/uvp_pre_allocate_rdd
- user-mode Verbs/uvp_pre_attach_mcast
- user-mode Verbs/uvp_pre_close_ca
- user-mode Verbs/uvp_pre_create_av
- user-mode Verbs/uvp_pre_create_cq
- user-mode Verbs/uvp_pre_create_eec
- user-mode Verbs/uvp_pre_create_mw
- user-mode Verbs/uvp_pre_create_qp
- user-mode Verbs/uvp_pre_deallocate_pd
- user-mode Verbs/uvp_pre_deallocate_rdd
- user-mode Verbs/uvp_pre_deregister_mr
- user-mode Verbs/uvp_pre_destroy_av
- user-mode Verbs/uvp_pre_destroy_cq
- user-mode Verbs/uvp_pre_destroy_eec
- user-mode Verbs/uvp_pre_destroy_mw
- user-mode Verbs/uvp_pre_destroy_qp
- user-mode Verbs/uvp_pre_detach_mcast
- user-mode Verbs/uvp_pre_modify_av
- user-mode Verbs/uvp_pre_modify_ca
- user-mode Verbs/uvp_pre_modify_eec
- user-mode Verbs/uvp_pre_modify_mr
- user-mode Verbs/uvp_pre_modify_qp
- user-mode Verbs/uvp_pre_open_ca
- user-mode Verbs/uvp_pre_query_av
- user-mode Verbs/uvp_pre_query_ca
- user-mode Verbs/uvp_pre_query_cq
- user-mode Verbs/uvp_pre_query_eec
- user-mode Verbs/uvp_pre_query_mr
- user-mode Verbs/uvp_pre_query_mw
- user-mode Verbs/uvp_pre_query_qp
- user-mode Verbs/uvp_pre_register_mr
- user-mode Verbs/uvp_pre_register_smr
- user-mode Verbs/uvp_pre_resize_cq
NAME
User-mode Verbs -- User-mode Verbs implements the HCA specific
user-mode functions to plug in to the Usermode Access Layer
Architecture (UAL)
COPYRIGHT
Copyright© 2001 Intel Corporation - All Rights Reserved.
DESCRIPTION
The user-mode Verbs Interface defines the mechanism for a HCA vendor
to plug into the User-mode Access Layer (UAL) architecture.
Access Layer API is what is exposed to the user-mode applications.
The interface described here is not Verbs API. In this interface model,
UAL provides a generic mechanism to exchange vendor specific info
in the implementation of verbs within the UAL architecture. UAL provides
the support for callback processing. For instance, AL provides a
QP error callback when a qp incurs error. Such asynchronous events are
handled with the support of UAL and not by the vendor interface described
here.
For verbs related AL APIs, UAL packages the parameters in an IOCTL
and sends it to the kernel AL. In the UAL design, this is broken down
into 3 steps.
a. Pre-ioctl step
A vendor specified pre-ioctl function is called with relevant input
parameters including a private buffer template (ci_umv_buf_t)
for the vendor to communicate with the corresponding HCA driver.
b. Sending IOCTL to kernel AL
Following step (a), UAL prepares an IOCTL with the relevant parameters
including the vendor's private buffer. UAL/user-mode proxy does not
interpret the contents of the private buffer.
UAL sends the IOCTL to the user-mode proxy in kernel. The proxy
interfaces with kernel AL to act on behalf the user. AL passes the
parameters to the Verbs Provider Driver and the results are returned
back to UAL.
c. Post-ioctl step.
Following the return from IOCTL in step (b), UAL calls a
vendor-specified post-ioctl function with relevant parameters.
UAL will call the post-ioctl function whether or not step (b)
succeeded. The ioctl itself could have successfully returned but
a vendor-specific status in ci_umvbuf_t may indicate a failure.
Use of ci_umv_buf_t and pre/post return values
1. ci_umv_buf is provided by UAL as a unique buffer template for
a given verbs call. Vendor could keep any info relevant to
the specific verbs call in this buffer. This
buffer is sufficient for uniquely identifying which call it is
intended for. For instance, the umv buffer set up by vendor in a
uvp_pre_open_ca() could later tell the uvp_post_open_ca() which
CA it is intended for.
2. The success of pre/post-ioctl step to UAL means IB_SUCCESS.
Any value other than IB_SUCCESS is treated as failure.
3. The Vendor could exchange a status in umv_buf_t. However, this
interface does not enumerate the status in umv_buf_t.
However, the vendor could check the status in ci_umv_buf_t
returned from the pre-ioctl step and act accordingly.
AUTHOR
Intel Corporation
CREATION DATE
XX.XX.XX
NOTES
1. For user mode verbs that require a kernel transition, handles passed
to kernel are validated in the user-mode proxy running in kernel.
Those Verbs that are entirely done in user mode that would affect
speed path do not perform consistency checks. So invalid pointers
would lead to application crash with core dumps.
NAME
1. Register physical memory region with HCA (ci_register_pmr)
2. Modify physical memory region with HCA (ci_modify_pmr)
3. Create Special QP (ci_create_spl_qp)
4. Local Mad (ci_local_mad)
For all these functions, the vendor does NOT provide support
and UAL will return IB_UNSUPPORTED to the caller of Access Layer.
SYNOPSIS
NAME
uvp_bind_mw -- Bind a memory window to a memory region.
SYNOPSIS
typedef ib_api_status_t
(*uvp_bind_mw) (
IN const uvp_mw_handle_t h_uvp_mw,
IN const uvp_qp_handle_t h_uvp_qp,
IN ib_bind_wr_t *p_mw_bind,
OUT uint32_t *p_rkey );
DESCRIPTION
This routine posts a request to bind a memory window to a registered
memory region. If the queue pair was created with selectable signaling,
once the operation is completed successfully then a completion queue entry
is generated indicating the bind operation has completed. The IB_POST_FENCE
option could be specified to cause the requestor to wait until outstanding
RDMA operations can be completed.
PARAMETERS
h_uvp_mw
[in] Vendor's Handle (in user-mode library) to memory window
that needs to be bound to a memory region.
h_uvp_qp
[in] Vendor's QP Handle (in user-mode library) to which
this bind request is to be posted.
p_mw_bind
[in out] Input parameters for this bind request, consisting of virtual
addr range of bind request etc. On successful completion, the new R_KEY
is returned.
RETURN VALUE
IB_SUCCESS
The memory bind operation was posted successfully.
IB_INSUFFICIENT_RESOURCES
Insufficient resources to complete the request.
No more WQE's to post this request
No more free WQE's to post this request
IB_INVALID_MW_HANDLE
memw_handle supplied is an invalid memory window handle.
IB_INVALID_PERMISSION
Invalid access rights specified in request
IB_INVALID_SERVICE_TYPE
Invalid service type for this qp_handle.
IB_INVALID_PARAMETER
Address or length parameter specified is invalid.
IB_INVALID_RKEY
R_KEY specified is invalid for the memory region being bound.
PORTABILITY
Kernel & User mode.
SEE ALSO
uvp_pre_create_mw, uvp_post_create_mw
NAME
uvp_enable_cq_notify -- Invoke the Completion handler, on next entry added.
SYNOPSIS
typedef ib_api_status_t
(*uvp_enable_cq_notify) (
IN const void *h_cq,
IN const boolean_t solicited );
DESCRIPTION
This routine instructs the channel interface to invoke the completion
handler when the next completion queue entry is added to this CQ.
Please refer to Volume 1, of the InfiniBand specification for a complete
description.
PARAMETERS
h_cq
[in] Type-cast as appropriate for user/kernel mode, this is
a CQ handle for the completion queue being polled.
solicited
[in] A boolean flag indicating whether the request is to generate a
notification on the next entry or on the next solicited entry
being added to the completion queue.
RETURN VALUE
IB_SUCCESS
The notification request was registered successfully.
IB_INVALID_CQ_HANDLE
cq_handle supplied is not a valid handle.
PORTABILITY
Kernel and User mode
NOTES
SEE ALSO
uvp_poll_cq, uvp_pre_create_cq, uvp_post_create_cq
uvp_pre_open_ca, uvp_post_open_ca
NAME
uvp_err_handler -- Vendor's handler for QP/CQ error notification
SYNOPSIS
typedef void
(*uvp_err_handler) (
IN const ib_async_event_rec_t *const p_err_rec); // Fix me, AL datatype
DESCRIPTION
uvp_err_handler() is an optional error handler implemented by vendor.
If the handler is provided, UAL will notify asynchronous errors for
resources (e.g QP/CQ errors). Vendor could do any tracking as needed.
PARAMETERS
p_err_rec
[in ]
On input, the error record contains the code for resource error.
The context is as appropriate for the resource. The vendor's
error handler could take appropriate action based on the type
of error and the context provided. The following table
provides how to interpret the context based on the error code.
Update for any more error code.
-----------------------------------
Error Context
-----------------------------------
QPERROR uvp_qp_handle_t
CQERROR uvp_cq_handle_t
RETURN VALUE
NONE
PORTABILITY
User mode.
SEE ALSO
NAME
uvp_get_interface -- Get the Vendor's supported Verbs calls
SYNOPSIS
ib_api_status_t
uvp_get_interface (
IN OUT uvp_interface_t *const p_uvp );
DESCRIPTION
This routine is called by UAL to get the functions supported by
a vendor's library. Upon discovering a new CA, UAL will look for
the appropriate vendor library, load the library and query using
this function to get the supported interfaces.
If the vendor does not support an interface function, it should be
set to NULL in the interface structure returned.
PARAMETERS
p_uvp
[in out] Pointer to the uvp_interface_t structure that has the function
vector to support verbs functionality.
RETURN VALUE
IB_SUCCESS
The registration is successful.
IB_INSUFFICIENT_MEMORY
Insufficient memory to satisfy request
PORTABILITY
User mode only
SEE ALSO
uvp_interface_t
NAME
uvp_interface_t -- Interface holding supported Vendor APIs
PURPOSE
The following structure is supplied by a Vendor library
providing verbs functionality.
SOURCE
typedef struct _uvp_interface
{
ib_net64_t guid;
/*
* Version of the header file this interface export can handle
*/
uint32_t version;
/*
* HCA Access Verbs
*/
uvp_pre_open_ca pre_open_ca;
uvp_post_open_ca post_open_ca;
uvp_pre_query_ca pre_query_ca;
uvp_post_query_ca post_query_ca;
uvp_pre_modify_ca pre_modify_ca;
uvp_post_modify_ca post_modify_ca;
uvp_pre_close_ca pre_close_ca;
uvp_post_close_ca post_close_ca;
/*
* Protection Domain and Reliable Datagram Domain
*/
uvp_pre_allocate_pd pre_allocate_pd;
uvp_post_allocate_pd post_allocate_pd;
uvp_pre_deallocate_pd pre_deallocate_pd;
uvp_post_deallocate_pd post_deallocate_pd;
uvp_pre_allocate_rdd pre_allocate_rdd;
uvp_post_allocate_rdd post_allocate_rdd;
uvp_pre_deallocate_rdd pre_deallocate_rdd;
uvp_post_deallocate_rdd post_deallocate_rdd;
/*
* Address Vector Management Verbs
*/
uvp_pre_create_av pre_create_av;
uvp_post_create_av post_create_av;
uvp_pre_query_av pre_query_av;
uvp_post_query_av post_query_av;
uvp_pre_modify_av pre_modify_av;
uvp_post_modify_av post_modify_av;
uvp_pre_destroy_av pre_destroy_av;
uvp_post_destroy_av post_destroy_av;
/*
* QP Management Verbs
*/
uvp_pre_create_qp pre_create_qp;
uvp_post_create_qp post_create_qp;
// !!! none for create_spl_qp, UAL will return error !!!
uvp_pre_modify_qp pre_modify_qp;
uvp_post_modify_qp post_modify_qp;
uvp_pre_query_qp pre_query_qp;
uvp_post_query_qp post_query_qp;
uvp_pre_destroy_qp pre_destroy_qp;
uvp_post_destroy_qp post_destroy_qp;
/*
* Completion Queue Management Verbs
*/
uvp_pre_create_cq pre_create_cq;
uvp_post_create_cq post_create_cq;
uvp_pre_query_cq pre_query_cq;
uvp_post_query_cq post_query_cq;
uvp_pre_resize_cq pre_resize_cq;
uvp_post_resize_cq post_resize_cq;
uvp_pre_destroy_cq pre_destroy_cq;
uvp_post_destroy_cq post_destroy_cq;
/*
* EE Management
*/
uvp_pre_create_eec pre_create_eec;
uvp_post_create_eec post_create_eec;
uvp_pre_query_eec pre_query_eec;
uvp_post_query_eec post_query_eec;
uvp_pre_modify_eec pre_modify_eec;
uvp_post_modify_eec post_modify_eec;
uvp_pre_destroy_eec pre_destroy_eec;
uvp_post_destroy_eec post_destroy_eec;
/*
* Memory Management Verbs
*/
uvp_pre_register_mr pre_register_mr;
uvp_post_register_mr post_register_mr;
uvp_pre_query_mr pre_query_mr;
uvp_post_query_mr post_query_mr;
uvp_pre_deregister_mr pre_deregister_mr;
uvp_post_deregister_mr post_deregister_mr;
uvp_pre_modify_mr pre_modify_mr;
uvp_post_modify_mr post_modify_mr;
uvp_pre_register_smr pre_register_smr;
uvp_post_register_smr post_register_smr;
// register_pmr is not supported in user-mode
/*
* Memory Window Verbs
*/
uvp_pre_create_mw pre_create_mw;
uvp_post_create_mw post_create_mw;
uvp_pre_query_mw pre_query_mw;
uvp_post_query_mw post_query_mw;
uvp_pre_destroy_mw pre_destroy_mw;
uvp_post_destroy_mw post_destroy_mw;
// No pre/post functions for bind
uvp_bind_mw bind_mw;
/*
* Work Request Processing Verbs
* Should the types be same as Verbs?
*/
uvp_post_send post_send;
uvp_post_recv post_recv;
/*
* Completion Processing and
* Completion Notification Request Verbs.
* Should the types be same as Verbs?
*/
uvp_poll_cq poll_cq;
uvp_enable_cq_notify enable_cq_notify;
/*
* Multicast Support Verbs
*/
uvp_pre_attach_mcast pre_attach_mcast;
uvp_post_attach_mcast post_attach_mcast;
uvp_pre_detach_mcast pre_detach_mcast;
uvp_post_detach_mcast post_detach_mcast;
/*
* Local MAD support, for HCA's that do not support
* Agents in the HW.
* ??? Do we need this for user-mode ???
*/
/*
* Error notification
* If the vendor provides these functions, UAL will
* invoke these functions when a QP/CQ error is reported by AL.
*
*/
uvp_err_handler err_handler;
} uvp_interface_t;
NAME
uvp_poll_cq -- Retrieve a work completion record from a completion queue
SYNOPSIS
typedef ib_api_status_t
(*uvp_poll_cq) (
IN void *h_cq,
IN OUT ib_wc_t **pp_free_wclist,
OUT ib_wc_t **pp_done_wclist );
DESCRIPTION
This routine retrieves a work completion entry from the specified
completion queue. The contents of the data returned in a work completion
is specified in ib_wc_t.
PARAMETERS
h_cq
[in] Type-cast as appropriate for user/kernel mode, this is
the CQ handle for the completion queue being polled.
pp_free_wclist
[in out] A list of work request structures provided by the consumer
for the channel interface to return completed Completion Queue
entries. If not all the entries are consumed, this list holds the
list of un-utilized completion entries provided back to the consumer.
pp_done_wclist
[out] A list of work completions retrieved from the completion queue
and successfully processed.
RETURN VALUE
IB_SUCCESS
Poll completed successfully. If on completion the wc_free list is
empty, then there are potentially more entries and the consumer must
be ready to retrieve entries further.
IB_INVALID_CQ_HANDLE
The cq_handle supplied is not valid.
IB_NOT_FOUND
There are no more entries found in the specified CQ.
PORTABILITY
Kernel & User mode.
SEE ALSO
uvp_pre_create_cq, uvp_post_create_cq,
uvp_post_send, uvp_post_recv, uvp_bind_mw
NAME
uvp_post_allocate_pd -- Vendor-specific post-ioctl function to allocate PD
SYNOPSIS
typedef ib_api_status_t
(*uvp_post_allocate_pd) (
IN const uvp_ca_handle_t h_uvp_ca,
OUT uvp_pd_handle_t *ph_uvp_pd,
IN OUT ci_umv_buf_t *p_umv_buf);
DESCRIPTION
uvp_post_allocate_pd() is implemented by vendor. It is the post-ioctl
routine for the AL call ib_alloc_pd().
PARAMETERS
h_uvp_ca
[in]
Vendor's user-mode library CA handle.
ph_uvp_pd
[in out]
On output, vendor library returns PD Handle here.
p_umv_buf
[in out]
On input, it contains any vendor-specific private information
exchanged with the vendor's Verbs Provider Driver (uvp_pre_allocate_pd).
Vendor is expected to check vendor-specific status in
umv_buf as appropriate.
RETURN VALUE
IB_SUCCESS
Vendor library successfully populated umv buffer with relevant info.
IB_INSUFFICIENT_RESOURCES
Insufficient resources in Vendor library to complete the call
PORTABILITY
User Mode
SEE ALSO
uvp_pre_allocate_pd, uvp_pre_deallocate_pd, uvp_post_deallocate_pd
NAME
uvp_post_allocate_rdd -- Vendor-specific pre-ioctl function to allocate RDD
SYNOPSIS
typedef ib_api_status_t
(*uvp_post_allocate_rdd) (
IN const uvp_ca_handle_t h_uvp_ca,
OUT uvp_rdd_handle_t *ph_uvp_rdd,
IN OUT ci_umv_buf_t *p_umv_buf);
DESCRIPTION
uvp_post_allocate_rdd() is implemented by the vendor. It is
the post-ioctl routine for the AL call ib_alloc_rdd().
PARAMETERS
h_uvp_pd
[in]
Vendor's user-mode library PD handle.
ph_uvp_rdd
[in out]
Vendor's handle to RDD.
p_umv_buf
[in out]
On input, it contains any vendor-specific private information
exchanged with the vendor's Verbs Provider Driver (uvp_pre_allocate_rdd)
Vendor is expected to check vendor-specific status in
umv_buf as appropriate.
RETURN VALUE
IB_SUCCESS
Vendor library successfully populated umv buffer with relevant info.
IB_INSUFFICIENT_RESOURCES
Insufficient resources in Vendor library to complete the call
PORTABILITY
User Mode
SEE ALSO
uvp_pre_allocate_rdd, uvp_pre_deallocate_rdd, uvp_post_deallocate_rdd
NAME
uvp_post_attach_mcast --
post-ioctl function to Attach a queue pair to a multicast group
SYNOPSIS
typedef ib_api_status_t
(*uvp_post_attach_mcast) (
IN const uvp_qp_handle_t h_uvp_qp,
OUT uvp_mcast_handle_t *ph_mcast,
IN OUT ci_umv_buf_t *p_umv_buf);
DESCRIPTION
uvp_post_attach_mcast() is the post-ioctl routine implemented by vendor
to attach a queue pair to a multicast group.
PARAMETERS
h_uvp_qp
[in] Vendor's Queue pair handle (in user-mode library)
which needs to be added to
the multicast group on the adapter.
mcast_lid
[in] The multicast group LID value.
p_mcast_gid
[in] IPv6 address associated with this multicast group.
ph_mcast
[out] Vendor's Multicast handle (in user-mode library)
holding the association of this queue pair to the multicast group.
p_umv_buf
[in out]
On input, it contains any vendor-specific private information
exchanged with the vendor's Verbs Provider Driver (uvp_pre_attach_mcast)
Vendor is expected to check vendor-specific status in
umv_buf as appropriate.
RETURN VALUE
IB_SUCCESS
The queue pair handle was successfully added to the multicast
group.
IB_INVALID_QP_HANDLE
qp_handle supplied is invalid.
IB_INVALID_SERVICE_TYPE
Queue pair handle supplied is not of unreliable datagram type.
IB_INVALID_GID
The supplied addr is not a valid multicast ipv6 address.
PORTABILITY
Kernel & User mode.
SEE ALSO
uvp_pre_create_qp, uvp_post_create_qp,
uvp_pre_attach_mcast, uvp_pre_detach_mcast, uvp_post_detach_mcast
NOTES
TBD.....
NAME
uvp_post_close_ca --
post-ioctl function to Close access to adapter via this h_ca
SYNOPSIS
typedef ib_api_status_t
(*uvp_post_close_ca) (
IN uvp_ca_handle_t h_uvp_ca);
DESCRIPTION
uvp_post_close_ca() is implemented by vendor. It is the post-ioctl routine
for the AL call ib_close_ca().
UAL calls this function in the context of the asynchronous callback
from AL notifying the successful destruction of CA.
PARAMETERS
h_uvp_ca
[in] Vendor's user-mode library handle to the open instance of the CA
RETURN VALUE
IB_SUCCESS
The post-ioctl for ib_close_ca() is successfully completed.
IB_INVALID_CA_HANDLE
Channel adapter handle was invalid.
PORTABILITY
User Mode
SEE ALSO
uvp_pre_close_ca, uvp_pre_open_ca, uvp_post_open_ca
NOTES
NAME
uvp_post_create_av -- Vendor-specific post-ioctl function to create AV
SYNOPSIS
typedef ib_api_status_t
(*uvp_post_create_av) (
IN const uvp_pd_handle_t h_uvp_pd,
OUT uvp_av_handle_t *ph_uvp_av,
IN OUT ci_umv_buf_t *p_umv_buf);
DESCRIPTION
uvp_post_create_av() is implemented by vendor. It is the post-ioctl routine
for ib_create_av().
PARAMETERS
h_uvp_pd
[in] Vendor's user-mode library handle to the Protection domain
to which this AV is associated
ph_uvp_av
[out] Vendor's Handle to use for datagram sends.
p_umv_buf
[in out]
On input, it contains any vendor-specific private information
exchanged with the vendor's Verbs Provider Driver (uvp_pre_create_av).
Vendor is expected to check vendor-specific status in
umv_buf as appropriate.
RETURN VALUE
IB_SUCCESS
The create operation was successful
IB_INVALID_SETTING
Values in the vector is not valid
IB_INSUFFICIENT_RESOURCES
No more address handles are available
PORTABILITY
User Mode
SEE ALSO
uvp_pre_create_av, uvp_pre_destroy_av, uvp_post_destroy_av
NAME
uvp_post_create_cq --
post-ioctl function to Create a completion queue (CQ)
on the specified HCA.
SYNOPSIS
typedef ib_api_status_t
(*uvp_post_create_cq) (
IN const uvp_pd_handle_t h_uvp_pd, // or h_uvp_ca
IN const uint32_t size,
OUT uvp_cq_handle_t *ph_uvp_cq,
IN OUT ci_umv_buf_t *p_umv_buf);
DESCRIPTION
uvp_post_create_cq() is implemented by vendor to create CQ.
It is the post-ioctl routine for ib_create_cq().
PARAMETERS
h_uvp_pd
[in] Vendor's handle to an existing protection domain (in user-mode
library)
size
[in] size of the CQ that was created by the provider.
If VPD created the CQ in kernel, this is the value as set by
VPD. If UVP creates the CQ in user-mode, then uvp already knows
the size of the CQ in the pre-ioctl.
h_uvp_cq
[out] Vendor's Handle to the newly created CQ (in user-mode library).
p_umv_buf
[in out]
On input, it contains any vendor-specific private information
exchanged with the vendor's Verbs Provider Driver (uvp_pre_create_cq).
Vendor is expected to check vendor-specific status in
umv_buf as appropriate.
RETURN VALUE
IB_SUCCESS
The operation was successful.
IB_INSUFFICIENT_RESOURCES
Insufficient resources to complete request.
PORTABILITY
User mode.
SEE ALSO
uvp_pre_create_cq, uvp_pre_resize_cq, uvp_post_resize_cq,
uvp_pre_destroy_cq, uvp_post_destroy_cq
NAME
uvp_post_create_eec -- post-ioctl function to Create an EE context
SYNOPSIS
typedef ib_api_status_t
(*uvp_post_create_eec) (
IN const uvp_rdd_handle_t h_uvp_rdd,
OUT uvp_eec_handle_t *p_uvp_eec,
IN OUT ci_umv_buf_t *p_umv_buf);
DESCRIPTION
uvp_post_create_eec() is implemented by vendor to create an EE context.
It is the post-ioctl routine for ib_create_eec().
PARAMETERS
h_uvp_rdd
[in] Vendor's handle (in user-mode library) to the reliable datagram
domain to which this EE is associated with.
p_uvp_eec
[out] Pointer to vendor's handle (in user-mode library) to EE
p_umv_buf
[in out]
On input, it contains any vendor-specific private information
exchanged with the vendor's Verbs Provider Driver (uvp_pre_create_ee).
Vendor is expected to check vendor-specific status in
umv_buf as appropriate.
RETURN VALUE
IB_SUCCESS
The EE context is successfully created and the values returned
are valid.
IB_INVALID_RDD_HANDLE
rdd_handle passed is invalid.
IB_INSUFFICIENT_RESOURCES
Insufficient resources to complete request.
IB_UNSUPPORTED
RDD is not supported feature by this HCA.
PORTABILITY
User mode.
SEE ALSO
uvp_pre_create_eec,
uvp_pre_destroy_eec, uvp_post_destroy_eec,
uvp_pre_query_eec, uvp_post_query_eec
NAME
uvp_post_create_mw --
post-ioctl function to create a memory window
SYNOPSIS
typedef ib_api_status_t
(*uvp_post_create_mw) (
IN const uvp_pd_handle_t h_uvp_pd,
IN uint32_t rkey,
OUT uvp_mw_handle_t *ph_uvp_mw,
IN OUT ci_umv_buf_t *p_umv_buf);
DESCRIPTION
uvp_post_create_mw() is implemented by vendor. It is the post-ioctl routine
for ib_create_mw().
PARAMETERS
h_uvp_pd
[in] Vendor's Protection domain handle (in user-mode library)
to use for this memory window
p_rkey
[in] Remote access key that can be exchanged with a remote node to
perform RDMA transactions on this memory window.
ph_uvp_mw
[out] Vendor's Handle (in user-mode library) to the newly created
memory window.
p_umv_buf
[in out]
On input, it contains any vendor-specific private information
exchanged with the vendor's Verbs Provider Driver (uvp_pre_create_mw).
Vendor is expected to check vendor-specific status in
umv_buf as appropriate.
RETURN VALUE
IB_SUCCESS
The memory window allocation completed successfully.
IB_INSUFFICIENT_RESOURCES
Not enough resources to complete the request.
IB_INVALID_CA_HANDLE
h_ca supplied is invalid.
IB_INVALID_PD_HANDLE
pd_handle supplied is invalid.
PORTABILITY
Kernel & User mode
SEE ALSO
uvp_pre_create_mw, uvp_pre_destroy_mw, uvp_post_destroy_mw
uvp_pre_query_mw, uvp_post_query_mw,
uvp_bind_mw
NAME
uvp_post_create_qp --
post-ioctl function to Create a Queue Pair for the specified HCA
SYNOPSIS
typedef ib_api_status_t
(*uvp_post_create_qp) (
IN const uvp_pd_handle_t h_uvp_pd, // could go away
//IN ib_qp_attr_t *p_query_attr,
OUT uvp_qp_handle_t *ph_uvp_qp,
IN OUT ci_umv_buf_t *p_umv_buf);
DESCRIPTION
uvp_post_create_qp() is implemented by vendor. It is the post-ioctl routine
for ib_create_qp().
PARAMETERS
h_uvp_pd
[in] Vendor's Protection domain handle in user-mode library.
p_query_attr
[in] Attributes of the newly created queue pair (as returned by
the kernel-mode).
ph_uvp_qp
[out] Vendor's QP handle for the newly created QP (in user-mode
library).
p_umv_buf
[in out]
On input, it contains any vendor-specific private information
exchanged with the vendor's Verbs Provider Driver (uvp_pre_create_qp).
Vendor is expected to check vendor-specific status in
umv_buf as appropriate.
RETURN VALUE
IB_SUCCESS
The create operation was successful
IB_INSUFFICIENT_RESOURCES
Insufficient resources to complete request.
PORTABILITY
User Mode
SEE ALSO
uvp_pre_create_qp,
uvp_pre_modify_qp, uvp_post_modify_qp,
uvp_pre_destroy_qp, uvp_post_destroy_qp,
uvp_pre_query_qp, uvp_post_query_qp
NAME
uvp_post_deallocate_pd -- Vendor-specific post-ioctl function to
deallocate PD
SYNOPSIS
typedef ib_api_status_t
(*uvp_post_deallocate_pd) (
IN const uvp_pd_handle_t h_uvp_pd );
DESCRIPTION
uvp_post_deallocate_pd() is implemented by the vendor. It is the
post-ioctl routine for the AL call ib_dealloc_pd().
When all the resouces associated with a PD are destroyed,
UAL invokes this post-ioctl routine to deallocate PD. Since the
completion of the resource deallocation (e.g QP/CQ) is asynchronous,
this function is called from a UAL asynchronous callback
processing thread.
PARAMETERS
h_uvp_pd
[in]
Vendor's user-mode library PD handle.
RETURN VALUE
IB_SUCCESS
Vendor library successfully populated umv buffer with relevant info.
IB_INSUFFICIENT_RESOURCES
Insufficient resources in Vendor library to complete the call
PORTABILITY
User Mode
SEE ALSO
uvp_pre_allocate_pd, uvp_post_allocate_pd, uvp_pre_deallocate_pd
NAME
uvp_post_deallocate_rdd -- Vendor-specific pre-ioctl function to
deallocate RDD.
SYNOPSIS
typedef ib_api_status_t
(*uvp_post_deallocate_rdd) (
IN const uvp_rdd_handle_t h_uvp_rdd,
IN OUT ci_umv_buf_t* p_umv_buf);
DESCRIPTION
uvp_post_deallocate_rdd() is implemented by vendor. It is the post-ioctl
routine for ib_dealloc_rdd().
When all the resouces associated with an RDD are destroyed,
UAL invokes this post-ioctl routine to deallocate RDD. Since the
completion of the resource deallocation (e.g QP/CQ) is asynchronous,
uvp_post_deallocate_rdd() is called from a UAL asynchronous callback
processing thread.
PARAMETERS
h_uvp_rdd
[in]
Vendor's RDD handle in user-mode library.
RETURN VALUE
IB_SUCCESS
Vendor library successfully populated umv buffer with relevant info.
IB_INVALID_RDD_HANDLE
RDD handle was invalid
PORTABILITY
User Mode
SEE ALSO
uvp_pre_allocate_rdd, uvp_post_allocate_rdd, uvp_pre_deallocate_rdd
NAME
uvp_post_deregister_mr -- post-ioctl to deRegister a memory region
SYNOPSIS
typedef ib_api_status_t
(*uvp_post_deregister_mr) (
IN const uvp_mr_handle_t h_uvp_mr,
IN OUT ci_umv_buf_t *p_umv_buf);
DESCRIPTION
uvp_post_deregister_mr() is implemented by vendor. It is the post-ioctl
routine for ib_dereg_mr().
PARAMETERS
h_uvp_mr
[in] Vendor's Memory handle (in user-mode library)
that is being de-registered.
p_umv_buf
[in]
On input, it contains any vendor-specific private information
exchanged with the vendor's Verbs Provider Driver (uvp_pre_deregister_mr)
Vendor is expected to check vendor-specific status in
umv_buf as appropriate.
RETURN VALUE
IB_SUCCESS
The memory de-registration was successful
IB_INVALID_MR_HANDLE
mem_handle supplied is not a valid memory handle.
PORTABILITY
User mode
NOTES
SEE ALSO
uvp_pre_destroy_mr,
uvp_pre_register_mr, uvp_post_register_mr,
uvp_pre_register_smr, uvp_post_register_smr
NAME
uvp_post_destroy_av -- Vendor-specific pre-ioctl function to destroy AV
SYNOPSIS
typedef ib_api_status_t
(*uvp_post_destroy_av) (
IN const uvp_av_handle_t h_uvp_av,
IN OUT ci_umv_buf_t *p_umv_buf);
DESCRIPTION
uvp_post_destroy_av() is implemented by vendor. It is the post-ioctl
routine for ib_destroy_av().
UAL invokes this post-ioctl routine to destroy an AV.
??? Is this called from an asynchronous destroy callback ???
??? If called from asynchronous callback, umv_buf is not needed.
PARAMETERS
h_uvp_av
[in] Vendor's AV handle in user-mode library.
p_umv_buf
[in out]
On input, it contains any vendor-specific private information
exchanged with the vendor's Verbs Provider Driver (uvp_pre_destroy_av).
Vendor is expected to check vendor-specific status in
umv_buf as appropriate.
RETURN VALUE
IB_SUCCESS
The create operation was successful
IB_INVALID_ADDR_HANDLE
Address handle supplied is not valid.
PORTABILITY
User Mode
SEE ALSO
uvp_pre_destroy_av,
uvp_pre_create_av, uvp_post_create_av,
uvp_pre_modify_av, uvp_post_modify_av
NAME
uvp_post_destroy_cq --
post-ioctl function to Destroy the specified Completion Queue.
SYNOPSIS
typedef ib_api_status_t
(*uvp_post_destroy_cq) (
IN const uvp_cq_handle_t h_uvp_cq );
DESCRIPTION
uvp_post_destroy_cq() is implemented by vendor to destroy CQ.
It is the post-ioctl routine for ib_destroy_cq().
UAL invokes this post-ioctl routine to destroy CQ when it receives
asynchronous notification from the user-mode proxy.
PARAMETERS
h_uvp_cq
[in] Vendor's Handle to the cq (in user-mode library)
that needs to be destroyed.
RETURN VALUE
IB_SUCCESS
IB_INVALID_CQ_HANDLE
The handle passed is invalid.
PORTABILITY
User mode.
SEE ALSO
uvp_pre_destroy_cq,
uvp_pre_create_cq, uvp_post_create_cq,
uvp_pre_resize_cq, uvp_post_resize_cq
NAME
uvp_post_destroy_eec -- post-ioctl to Destroy an EE context
SYNOPSIS
typedef ib_api_status_t
(*uvp_post_destroy_eec) (
IN const uvp_eec_handle_t h_uvp_eec);
DESCRIPTION
uvp_post_destroy_eec() is implemented by the vendor to destroy an EE.
It is the post-ioctl routine for ib_destroy_eec().
UAL invokes this post-ioctl routine to destroy EE when it receives
asynchronous notification from AL that the EE is destroyed.
PARAMETERS
h_uvp_eec
[in] Vendor's handle (in user-mode library) to EE
RETURN VALUE
IB_SUCCESS
EE handle is successfully destroyed.
IB_INVALID_HANDLE
The specified eec_handle is not valid.
IB_UNSUPPORTED
This Channel Interface does not support reliable datagram service type.
PORTABILITY
User mode.
NOTES
SEE ALSO
uvp_pre_destroy_eec,
uvp_pre_create_eec, uvp_post_create_eec
NAME
uvp_post_destroy_mw --
post-ioctl function to destroy a memory window
SYNOPSIS
typedef ib_api_status_t
(*uvp_post_destroy_mw) (
IN const uvp_mw_handle_t h_uvp_mw,
IN OUT ci_umv_buf_t *p_umv_buf);
DESCRIPTION
uvp_post_destroy_mw() is implemented by vendor. It is the post-ioctl
routine to destroy a memory window.
PARAMETERS
h_uvp_mw
[in] Vendor's handle to the memory window
p_umv_buf
[in out]
On input, it contains any vendor-specific private information
exchanged with the vendor's Verbs Provider Driver (uvp_pre_destroy_mw).
Vendor is expected to check vendor-specific status in
umv_buf as appropriate.
RETURN VALUE
IB_SUCCESS
Destroy operation successful.
IB_INVALID_MW_HANDLE
mw_handle supplied is invalid.
PORTABILITY
User mode
SEE ALSO
uvp_pre_destroy_mw,
uvp_pre_query_mw, uvp_post_query_mw,
uvp_bind_mw
NAME
uvp_post_destroy_qp --
post-ioctl function to Destroy the specified Queue Pair.
SYNOPSIS
typedef ib_api_status_t
(*uvp_post_destroy_qp) (
IN const uvp_qp_handle_t h_uvp_qp );
DESCRIPTION
uvp_post_destroy_qp() is implemented by vendor. It is the post-ioctl
routine for ib_destroy_qp().
UAL invokes this post-ioctl routine to destroy QP when it receives
asynchronous notification from the user-mode proxy in kernel.
Upon return from uvp_post_destroy_qp(), UAL performs any necessary cleanup
for the QP.
PARAMETERS
h_uvp_qp
[in] Vendor's Handle to the qp (in user-mode library)
that needs to be destroyed.
RETURN VALUE
IB_SUCCESS
IB_INVALID_QP_HANDLE
The handle passed is invalid.
PORTABILITY
User mode.
SEE ALSO
uvp_pre_destroy_qp, uvp_pre_create_qp, uvp_post_create_qp,
uvp_pre_modify_qp, uvp_post_modify_qp
NOTES
This call is made when the asynchonous destroy callback
is invoked. In this call, we don't have a umv_buf. Whatever context
is needed for the given QP, we assume that the vendor already
has it in his context.
NAME
uvp_post_detach_mcast --
post-ioctl function to detach a queue pair from a multicast group
SYNOPSIS
typedef ib_api_status_t
(*uvp_post_detach_mcast) (
IN uvp_mcast_handle_t h_uvp_mcast,
IN OUT ci_umv_buf_t *p_umv_buf);
DESCRIPTION
uvp_post_detach_mcast() is the post-ioctl routine implemented by vendor
to attach a queue pair to a multicast group.
PARAMETERS
h_uvp_mcast
[out] Vendor's Multicast handle holding the association of this
queue pair to the multicast group.
p_umv_buf
[in out]
On input, it contains any vendor-specific private information
exchanged with the vendor's Verbs Provider Driver (uvp_pre_detach_mcast)
Vendor is expected to check vendor-specific status in
umv_buf as appropriate.
RETURN VALUE
IB_SUCCESS
The queue pair handle was successfully added to the multicast
group.
IB_INVALID_MCAST_HANDLE
h_uvp_mcast_handle supplied is invalid.
PORTABILITY
Kernel & User mode.
SEE ALSO
uvp_pre_create_qp, uvp_post_create_qp
uvp_pre_attach_mcast,uvp_pre_detach_mcast
NOTES
TBD.....
NAME
uvp_post_modify_av -- Vendor-specific post-ioctl function to modify AV
SYNOPSIS
typedef ib_api_status_t
(*uvp_post_modify_av) (
IN const uvp_av_handle_t h_uvp_av,
IN OUT ci_umv_buf_t *p_umv_buf);
DESCRIPTION
uvp_post_modify_av() is implemented by vendor to modify the attributes
of AV. It is the post-ioctl routine for ib_modify_av().
PARAMETERS
h_uvp_av
[in] Vendor's av handle in user-mode library.
p_umv_buf
[in out]
On input, it contains any vendor-specific private information
exchanged with the vendor's Verbs Provider Driver (uvp_pre_modify_av).
Vendor is expected to check vendor-specific status in
umv_buf as appropriate.
RETURN VALUE
IB_SUCCESS
The create operation was successful
IB_INVALID_SETTING
Values in the vector is not valid
IB_INSUFFICIENT_RESOURCES
No more address handles are available
PORTABILITY
User Mode
SEE ALSO
uvp_pre_create_av, uvp_post_create_av, uvp_pre_destroy_av,
uvp_post_destroy_av
NAME
Vendor-specific post-ioctl operation for user-mode ib_modify_ca()
SYNOPSIS
typedef ib_api_status_t
(*uvp_post_modify_ca) (
IN uvp_ca_handle_t h_uvp_ca);
DESCRIPTION
uvp_post_modify_ca() is implemented by vendor. It is the post-ioctl routine
for the AL call ib_modify_ca() in user-mode.
PARAMETERS
h_uvp_ca
[in] Vendor's user-mode library handle to the open instance of the CA
p_umv_buf
[in out]
On input, it contains any vendor-specific private information
exchanged with the vendor's Verbs Provider Driver (uvp_pre_modify_ca).
Vendor is expected to check vendor-specific status in
umv_buf as appropriate.
RETURN VALUE
IB_SUCCESS
The CA attribute is modified successfully.
PORTABILITY
User Mode
SEE ALSO
uvp_pre_open_ca, uvp_pre_query_ca, uvp_post_query_ca,
uvp_pre_modify_ca,
uvp_pre_close_ca, uvp_post_close_ca
NAME
uvp_post_modify_eec -- post-ioctl to Modify the attributes of an EE
SYNOPSIS
typedef ib_api_status_t
(*uvp_post_modify_eec) (
IN const uvp_eec_handle_t h_uvp_eec,
IN OUT ci_umv_buf_t *p_umv_buf);
DESCRIPTION
uvp_post_modify_eec() is implemented by the vendor to to modify the
attributes of an EE. It is the post-ioctl routine for ib_modify_eec().
PARAMETERS
h_uvp_eec
[in] Vendor's handle (in user-mode library) to EE
p_umv_buf
[in out]
On input, it contains any vendor-specific private information
exchanged with the vendor's Verbs Provider Driver (uvp_pre_modify_eec).
Vendor is expected to check vendor-specific status in
umv_buf as appropriate.
RETURN VALUE
IB_SUCCESS
The call completed successfully.
IB_INVALID_HANDLE
eec_handle is invalid.
IB_INVALID_STATE
One or more of the attributes specified are not compatible with the
state change being performed on this EE.
IB_UNSUPPORTED
Reliable datagram operation is not supported.
IB_INVALID_PARAMETER
Invalid command mask specified in the eec_modify_attr.
PORTABILITY
User mode.
NOTES
SEE ALSO
uvp_pre_modify_eec,
uvp_pre_create_eec, uvp_post_create_eec,
uvp_pre_query_eec, uvp_post_query_eec
NAME
uvp_post_modify_mr -- post-ioctl function to Modify a memory region with HCA
SYNOPSIS
typedef ib_api_status_t
(*uvp_post_modify_mr) (
IN const uvp_mr_handle_t h_uvp_mr,
IN const uvp_pd_handle_t h_uvp_pd OPTIONAL,
//IN const ib_mr_create_t *p_mr_create, // Fix me: AL says optional?
IN const uint32_t *p_lkey, // Fix me: AL does not have
IN const uint32_t *p_rkey, // Fix me: AL does not have
IN OUT ci_umv_buf_t *p_umv_buf);
DESCRIPTION
uvp_post_modify_mr() is implemented by the vendor to modify the
attributes of a registered memory region.
It is the post-ioctl routine for ib_modify_mr().
PARAMETERS
h_uvp_mr
[in] Vendor's Handle (in user-mode library)
to the registered memory region.
h_uvp_pd
[in] Vendor's handle (in user-mode library) to PD on which memory
is being registered
mem_modify_req
[in] Command specifying which parts of the mem_region is valid. The
command is specified as a bit mask.
p_mr_create
[in] Desired attributes that need to be modified for mem_handle.
p_lkey
[in] The new l_key for this newly registered memory region.
(as returned by the ioctl)
p_rkey
[in] The new r_key for this newly registered memory region.
(as returned by the ioctl)
p_umv_buf
[in out]
On input, it contains any vendor-specific private information
exchanged with the vendor's Verbs Provider Driver (uvp_pre_modify_mr).
Vendor is expected to check vendor-specific status in
umv_buf as appropriate.
RETURN VALUE
IB_SUCCESS
The modify memory region request completed successfully.
IB_RESOURCE_BUSY
The memory region has windows bound to it.
IB_INSUFFICIENT_RESOURCES
Insufficient resources to complete the request.
IB_INVALID_MR_HANDLE
mem_handle supplied is not a valid memory region handle.
IB_INVALID_PERMISSION
Invalid access rights specified.
IB_INVALID_PARAMETER
Address, Length or specified modify mask is invalid.
PORTABILITY
User mode.
NOTES
SEE ALSO
uvp_pre_modify_mr,
uvp_pre_register_mr, uvp_post_register_mr,
uvp_pre_deregister_mr, uvp_post_deregister_mr
NAME
uvp_post_modify_qp --
post-ioctl function to Modify attributes of the specified QP.
SYNOPSIS
typedef ib_api_status_t
(*uvp_post_modify_qp) (
IN const uvp_qp_handle_t h_uvp_qp,
//IN const ib_qp_attr_t *p_query_attr,
IN OUT ci_umv_buf_t *p_umv_buf);
DESCRIPTION
uvp_post_modify_qp() is implemented by vendor to modify the qp attributes.
It is the post-ioctl routine for ib_modify_qp().
PARAMETERS
h_uvp_qp
[in] Vendor's qp Handle to the queue pair (in user-mode library)
whose state is to be modified.
p_query_attr
[in] QP attributes of the successfully modified qp (as returned by
the IOCTL from the kernel mode).
p_umv_buf
[in out]
On input, it contains any vendor-specific private information
exchanged with the vendor's Verbs Provider Driver (uvp_pre_modify_qp).
Vendor is expected to check vendor-specific status in
umv_buf as appropriate.
RETURN VALUE
<< TODO: Revisit the return values for user-mode >>
IB_SUCCESS
The operation was successful and the QP attributes are modified
to the requested state.
IB_INSUFFICIENT_RESOURCES
Insufficient resources to complete the requested operation.
IB_INVALID_QP_HANDLE
Invalid QP handle was passed.
IB_UNSUPPORTED
Requested operation is not supported, for e.g. Atomic operations.
IB_QP_INVALID_STATE
Invalid state transition request. Current QP state not in allowable
state.
IB_INVALID_PKEY
Pkey specified in modify request not valid entry in P_KEY table. Or
index is out of range.
IB_INVALID_PMIG_STATE
Invalid path migration state specified in the request.
PORTABILITY
User mode
NOTES
Refer to Table 79 in chapter 11, Volume 1 of the InfiniBand Specifications.
SEE ALSO
uvp_pre_modify_qp, uvp_pre_create_qp, uvp_post_create_qp
uvp_pre_query_qp, uvp_post_query_qp
NAME
Vendor-specific post-ioctl operation for user-mode ib_open_ca()
SYNOPSIS
typedef ib_api_status_t
(*uvp_post_open_ca) (
OUT uvp_ca_handle_t *ph_uvp_ca);
DESCRIPTION
uvp_post_open_ca() is implemented by vendor. It is the post-ioctl routine
for the AL call ib_open_ca() in user-mode.
UAL calls this post-ioctl routine once the ioctl for ib_open_ca()
returns successfully from the user-mode proxy in kernel. UAL's CA
handle is provided, in case the vendor needs to call AL api.
PARAMETERS
ph_uvp_ca
[out] Pointer to vendor's handle to the newly opened instance of
the CA.
p_umv_buf
[in out]
On input, it contains any vendor-specific private information
exchanged with the vendor's Verbs Provider Driver (uvp_pre_open_ca).
Vendor is expected to check vendor-specific status in
umv_buf as appropriate.
RETURN VALUE
IB_SUCCESS
The HCA is successfully opened and returned handle is valid.
IB_INSUFFICIENT_RESOURCES
Insufficient resources to satisfy request.
IB_INVALID_PARAMETER
One or more of the parameters passed in are invalid
IB_RESOURCE_BUSY
The interface is already open by another consumer.
PORTABILITY
User Mode
SEE ALSO
uvp_pre_open_ca, uvp_pre_query_ca, uvp_post_query_ca,
uvp_pre_modify_ca, uvp_post_modify_ca,
uvp_pre_close_ca, uvp_post_close_ca
NAME
Vendor-specific post-ioctl operation for user-mode ib_query_ca()
SYNOPSIS
typedef ib_api_status_t
(*uvp_post_query_av) (
IN uvp_av_handle_t h_uvp_av,
IN OUT ib_av_attr_t *p_addr_vector,
IN OUT uvp_pd_handle_t *ph_pd,
IN OUT ci_umv_buf_t *p_umv_buf);
DESCRIPTION
uvp_post_query_av() is implemented by vendor. It is the post-ioctl routine
for the AL call ib_query_av() in user-mode.
UAL provides the results of the query to the vendor library in this
post-ioctl routine.
PARAMETERS
h_uvp_av
[in] Vendor's handle to the address vector in user-mode library
p_addr_vector
[in] AV attribute (as returned by the ioctl).
p_umv_buf
[in out]
On input, it contains any vendor-specific private information
exchanged with the vendor's Verbs Provider Driver (uvp_pre_query_av).
Vendor is expected to check vendor-specific status in
umv_buf as appropriate.
RETURN VALUE
IB_SUCCESS
Query was successful.
IB_INVALID_PARAMETER
One or more of the parameters passed in are invalid
PORTABILITY
User Mode
SEE ALSO
uvp_pre_open_ca, uvp_pre_query_ca, uvp_post_query_ca,
uvp_pre_modify_ca, uvp_post_modify_ca,
uvp_pre_close_ca, uvp_post_close_ca
NAME
Vendor-specific post-ioctl operation for user-mode ib_query_ca()
SYNOPSIS
typedef ib_api_status_t
(*uvp_post_query_ca) (
IN uvp_ca_handle_t h_uvp_ca,
IN ib_ca_attr_t *p_ca_attr,
IN uint32_t byte_count,
IN OUT ci_umv_buf_t *p_umv_buf);
DESCRIPTION
uvp_post_query_ca() is implemented by vendor. It is the post-ioctl routine
for the AL call ib_query_ca() in user-mode. UAL provides the results
of querying the CA attributes to the vendor's post-ioctl routine.
PARAMETERS
h_uvp_ca
[in] Vendor's user-mode library handle to the open instance of the CA
p_ca_attr
[in] CA attribute of this Host Channel adapter (as returned by
from ioctl to kernel AL).
byte_count
[in] Number of bytes in ca_attr buffer.
p_umv_buf
[in out]
On input, it contains any vendor-specific private information
exchanged with the vendor's Verbs Provider Driver (uvp_pre_query_ca).
Vendor is expected to check vendor-specific status in
umv_buf as appropriate.
RETURN VALUE
IB_SUCCESS
The HCA is successfully opened and returned handle is valid.
IB_INSUFFICIENT_RESOURCES
Insufficient resources to satisfy request.
IB_INVALID_PARAMETER
One or more of the parameters passed in are invalid
IB_RESOURCE_BUSY
The interface is already open by another consumer.
TBD: Should UAL call uvp_open_ca() if the CA is already open?
PORTABILITY
User Mode
SEE ALSO
uvp_pre_open_ca, uvp_pre_query_ca,
uvp_pre_modify_ca, uvp_post_modify_ca,
uvp_pre_close_ca, uvp_post_close_ca
NAME
uvp_post_query_cq --
post-ioctl to Query the number of entries configured for the CQ.
SYNOPSIS
typedef ib_api_status_t
(*uvp_post_query_cq) (
IN const uvp_cq_handle_t h_uvp_cq,
IN OUT ci_umv_buf_t *p_umv_buf);
DESCRIPTION
uvp_post_query_cq() is implemented by vendor to query CQ.
It is the post-ioctl routine for ib_query_cq().
PARAMETERS
h_uvp_cq
[in] Vendor's Handle to the already created CQ (in user-mode library).
p_umv_buf
[in out]
On input, it contains any vendor-specific private information
exchanged with the vendor's Verbs Provider Driver (uvp_pre_query_cq).
Vendor is expected to check vendor-specific status in
umv_buf as appropriate.
RETURN VALUE
IB_SUCCESS
The operation was successful.
IB_INVALID_CQ_HANDLE
The CQ handle is invalid.
PORTABILITY
User mode.
SEE ALSO
uvp_pre_query_cq(),
uvp_pre_create_cq, uvp_post_create_cq,
uvp_pre_resize_cq, uvp_post_resize_cq
uvp_pre_destroy_cq, uvp_post_destroy_cq
NAME
uvp_post_query_eec -- post-ioctl to Query attributes of an EE context
SYNOPSIS
typedef ib_api_status_t
(*uvp_post_query_eec) (
IN const uvp_eec_handle_t h_uvp_eec,
IN ib_eec_attr_t *p_query_attr,
IN OUT ci_umv_buf_t *p_umv_buf);
DESCRIPTION
uvp_post_query_eec() is implemented by the vendor to query the
attributes of an EE context. It is the post-ioctl routine for
ib_query_eec().
PARAMETERS
h_uvp_eec
[in] Vendor's handle (in user-mode library) to EE
p_umv_buf
[in out]
On input, it contains any vendor-specific private information
exchanged with the vendor's Verbs Provider Driver (uvp_pre_query_eec).
Vendor is expected to check vendor-specific status in
umv_buf as appropriate.
RETURN VALUE
IB_SUCCESS
The EE context is successfully created and the values returned
are valid.
IB_INVALID_HANDLE
rdd_handle passed is invalid.
IB_UNSUPPORTED
RDD is not supported feature by this HCA.
PORTABILITY
User mode.
SEE ALSO
uvp_pre_query_eec,
uvp_pre_create_eec, uvp_post_create_eec,
uvp_pre_destroy_eec, uvp_post_destroy_eec,
NAME
uvp_post_query_mr -- post-ioctl to Query a memory region with HCA
SYNOPSIS
typedef ib_api_status_t
(*uvp_post_query_mr) (
IN const uvp_mr_handle_t h_uvp_mr,
IN const ib_mr_attr_t *p_mr_query,
IN OUT ci_umv_buf_t *p_umv_buf);
DESCRIPTION
uvp_post_query_mr is implemented by the vendor to query the memory region.
It is the post-ioctl routine for ib_query_mr().
PARAMETERS
h_uvp_mr
[in] Vendor's Handle (in user-mode library)
to the registered memory region.
p_mr_query
[in] Attributes of the memory region associated with mem_handle.
p_umv_buf
[in]
On input, it contains any vendor-specific private information
exchanged with the vendor's Verbs Provider Driver (uvp_pre_query_mr).
Vendor is expected to check vendor-specific status in
umv_buf as appropriate.
RETURN VALUE
IB_SUCCESS
The routine completed successfully and attributes returned
are valid.
IB_INVALID_MR_HANDLE
mem_handle is not valid.
PORTABILITY
User mode.
In user mode, proper ownership is determined before passing handles
down to kernel to protect from rogue applications.
SEE ALSO
uvp_pre_query_mr,
uvp_pre_register_mr, uvp_post_register_mr
uvp_pre_deregister_mr, uvp_post_deregister_mr
NAME
uvp_post_query_mw -- post-ioctl to Query a memory window
SYNOPSIS
typedef ib_api_status_t
(*uvp_post_query_mw) (
IN const uvp_mw_handle_t h_uvp_mw,
OUT uvp_pd_handle_t *ph_pd, // Fix me, UVP PD handle?
IN uint32_t rkey, // Fix me, rkey from AL or uvp?
IN OUT ci_umv_buf_t *p_umv_buf);
DESCRIPTION
uvp_post_query_mw is implemented by vendor. It is the post-ioctl routine
for ib_query_mw().
PARAMETERS
h_uvp_mw
[in] Vendor's Memory window handle (in user-mode library)
whose attributes are being retrieved.
h_pd
[in] Protection domain handle associated with this mw_handle
rkey
[in] Current R_KEY associated with this mw_handle
p_umv_buf
[in out]
On input, it contains any vendor-specific private information
exchanged with the vendor's Verbs Provider Driver (uvp_pre_query_mw).
Vendor is expected to check vendor-specific status in
umv_buf as appropriate.
RETURN VALUE
IB_SUCCESS
The query operation completed successfully.
IB_INVALID_MW_HANDLE
mw_handle supplied is an invalid handle
PORTABILITY
User mode
SEE ALSO
uvp_pre_query_mw,
uvp_pre_create_mw, uvp_post_create_mw,
uvp_bind_mw
NAME
Vendor-specific post-ioctl operation for user-mode ib_query_qp()
SYNOPSIS
typedef ib_api_status_t
(*uvp_post_query_qp) (
IN uvp_qp_handle_t h_uvp_qp,
IN ib_qp_attr_t *p_query_attr,
IN OUT ci_umv_buf_t *p_umv_buf);
DESCRIPTION
uvp_post_query_qp() is implemented by vendor. It is the post-ioctl routine
for ib_query_qp().
UAL provides the results of the query to the vendor library in this
post-ioctl routine.
PARAMETERS
h_uvp_qp
[in] Vendor's handle to the QP (in user-mode library).
p_query_attr
[in] QP attribute as returned by the ioctl.
p_umv_buf
[in out]
On input, it contains any vendor-specific private information
exchanged with the vendor's Verbs Provider Driver (uvp_pre_query_qp).
Vendor is expected to check vendor-specific status in
umv_buf as appropriate.
RETURN VALUE
IB_SUCCESS
The HCA is successfully opened and returned handle is valid.
IB_INVALID_PARAMETER
One or more of the parameters passed in are invalid
IB_INVALID_QP_HANDLE
QP handle was invalid
PORTABILITY
User Mode
SEE ALSO
uvp_pre_create_qp, uvp_post_create_qp,
uvp_pre_modify_qp, uvp_post_modify_qp,
uvp_pre_destroy_qp, uvp_post_destroy_qp
NAME
uvp_post_recv -- Post a work request to the receive queue of a queue pair.
SYNOPSIS
typedef ib_api_status_t
(*uvp_post_recv) (
IN const void* h_qp,
IN ib_recv_wr_t* const p_recv_wr,
OUT ib_recv_wr_t** pp_recv_failure);
DESCRIPTION
This routine allows to queue a work request to the receive side of a
queue pair. The work_req holds necessary data to satisfy an incoming
receive message. If an attempt is made to queue more work requests than
what is available, an error is returned.
PARAMETERS
h_qp
[in] Type-cast as appropriate for user/kernel mode, this is
the Queue pair handle to which the receive work request is being
posted.
PARAMETER_TBD
[in out]
RETURN VALUE
Any unsuccessful status indicates the status of the first failed request.
IB_SUCCESS
The work request was successfully queued to the receive side of the QP.
IB_INVALID_QP_HANDLE
qp_handle supplied is not valid.
IB_INSUFFICIENT_RESOURCES
The qp has exceeded its receive queue depth than what is has been
configured.
IB_INVALID_WR_TYPE
Invalid work request type found in the request.
IB_INVALID_QP_STATE
QP was in reset or init state.
(TBD: there may be an errata that allows posting in init state)
PORTABILITY
Kernel & User mode.
SEE ALSO
uvp_post_send, uvp_poll_cq
NAME
uvp_pre_register_mr -- post-ioctl routine to
Register a memory region with HCA
SYNOPSIS
typedef ib_api_status_t
(*uvp_post_register_mr) (
IN const uvp_pd_handle_t h_uvp_pd,
//IN const ib_mr_create_t *p_mr_create, /* Do we need this? */
IN const uint32_t *p_lkey, // Fix me: AL does not have
IN const uint32_t *p_rkey, // Fix me
OUT const uvp_mr_handle_t *ph_uvp_mr,
IN OUT ci_umv_buf_t *p_umv_buf);
DESCRIPTION
uvp_post_register_mr() is implemented by the vendor to register memory
region. It is the post-ioctl routine for ib_reg_mem().
PARAMETERS
h_uvp_pd
[in] Vendor's handle (in user-mode library) to PD on which memory
is being registered
p_lkey
[out] Local Key Attributes of the registered memory region
p_rkey
[out] Remote key of the registered memory region
ph_uvp_mr
[out] Vendor's Handle (in user-mode library)
to the registered memory region. This handle is used when
submitting work requests to refer to this region of memory.
p_umv_buf
[in out]
On input, it contains any vendor-specific private information
exchanged with the vendor's Verbs Provider Driver (uvp_pre_register_mr).
Vendor is expected to check vendor-specific status in
umv_buf as appropriate.
RETURN VALUE
IB_SUCCESS
Registration with the adapter was successful.
IB_INSUFFICIENT_RESOURCES
Insufficient resources to satisfy request.
IB_INVALID_PARAMETER
Invalid length or address in mem_region.
IB_INVALID_PD_HANDLE
Invalid mr_pdhandle
IB_INVALID_PERMISSION
Invalid access rights.
PORTABILITY
User mode.
NOTES
SEE ALSO
uvp_pre_register_mr,
uvp_pre_deregister_mr, uvp_post_deregister_mr
uvp_pre_modify_mr, uvp_post_modify_mr
NAME
uvp_post_register_smr -- post-ioctl to register a memory region
using same physical pages as an existing memory region.
SYNOPSIS
typedef ib_api_status_t
(*uvp_post_register_smr) (
IN const uvp_pd_handle_t h_uvp_pd,
IN const uvp_mr_handle_t h_uvp_mr,
IN const void *p_vaddr,
IN const uint32_t *p_lkey,
IN const uint32_t *p_rkey,
OUT const uvp_mr_handle_t *ph_uvp_smr,
IN OUT ci_umv_buf_t *p_umv_buf);
DESCRIPTION
uvp_post_register_smr is implemented by vendor to register a new memory
region but shares the same set of physical pages associated with
memory handle. It is the post-ioctl routine for ib_reg_shared().
PARAMETERS
h_uvp_mr
[in] Vendor's Handle (in user-mode library) to memory region
whose physical pages are being registered by this shared registration.
p_mr_create
[in] holds requested virtual addr, the protection domain to use
p_vaddr
[in] Virtual address of the assigned to this region on successful
registration.
p_lkey
[in] L_KEY for this memory region.
p_rkey
[in] R_KEY for this memory region. This is valid only when remote
access is enabled for this region.
ph_uvp_smr
[out] Vendor's Handle (in user-mode library) to the registered
memory region. This handle is used when
submitting work requests to refer to this region of memory.
p_umv_buf
[in out]
On input, it contains any vendor-specific private information
exchanged with the vendor's Verbs Provider Driver (uvp_pre_register_smr)
Vendor is expected to check vendor-specific status in
umv_buf as appropriate.
RETURN VALUE
IB_SUCCESS
The call is successful and a new region handle returned is valid.
IB_INVALID_MR_HANDLE
mr_handle is invalid.
IB_INVALID_PERMISSION
Invalid access rights passed in mr_access.
PORTABILITY
User mode
NOTES
ISSUE: how to deal with uvp_deregister_mr, uvp_modify_mr
should we treat them as memory windows and fail those if a shared region
was registered?
SEE ALSO
uvp_pre_register_smr,
uvp_pre_register_mr, uvp_post_register_mr,
uvp_pre_modify_mr, uvp_post_modify_mr
NAME
uvp_post_resize_cq --
post-ioctl function to resize a CQ on the specified HCA.
SYNOPSIS
typedef ib_api_status_t
(*uvp_post_resize_cq) (
IN const uvp_cq_handle_t h_uvp_cq,
IN const uint32_t size,
IN OUT ci_umv_buf_t *p_umv_buf);
DESCRIPTION
uvp_post_resize_cq() is implemented by vendor to resize the CQ.
It is the post-ioctl routine for ib_resize_cq().
PARAMETERS
h_uvp_cq
[in] Vendor's Handle to the already created CQ (in user-mode library).
size
[in] size of the CQ that was created by the provider.
If VPD resized the CQ in kernel, this is the value as set by
VPD. If UVP resizes the CQ in user-mode, then uvp already knows
the size of the CQ in the pre-ioctl.
p_umv_buf
[in out]
On input, it contains any vendor-specific private information
exchanged with the vendor's Verbs Provider Driver (uvp_pre_resize_cq).
Vendor is expected to check vendor-specific status in
umv_buf as appropriate.
RETURN VALUE
IB_SUCCESS
The operation was successful.
IB_INVALID_CQ_HANDLE
The CQ handle is invalid.
PORTABILITY
User mode.
SEE ALSO
uvp_pre_resize_cq,
uvp_pre_destroy_cq, uvp_post_destroy_cq
uvp_pre_create_cq, uvp_post_create_cq
NAME
uvp_post_send -- Post a work request to the send side of a queue pair.
SYNOPSIS
typedef ib_api_status_t
(*uvp_post_send) (
IN const void* h_qp,
IN ib_send_wr_t* const p_send_wr,
OUT ib_send_wr_t** pp_send_failure);
DESCRIPTION
This routine posts a work request to the send side of the queue pair.
The different types of work request that can be posted are explained in
the ib_wr_t structure. For exact details on ordering rules please consult
the Volume 1, of the InfiniBand Specifications. If there is more
outstanding requests posted that what the queue is configured for, an
immediate error is returned.
PARAMETERS
h_qp
[in] Type-cast as appropriate for user/kernel mode, this is
the Queue pair handle to which the receive work request is being
posted.
PARAMETER_TBD
[in out]
RETURN VALUE
Any unsuccessful status indicates the status of the first failed request.
IB_SUCCESS
All the work requests are completed successfully
IB_INVALID_QP_HANDLE
The qp_handle supplied is invalid.
IB_INSUFFICIENT_RESOURCES
Insufficient resources to complete the request.
There are no more work elements in the channel interface to
process this request, and the total outstanding work request has
been exceeded.
IB_INVALID_WR_TYPE
The work request type was not valid.
IB_INVALID_QP_STATE
The queue pair is either in Reset, Init, RTR or Error state.
IB_INVALID_MAX_SGE
The work request has too many scatter gather elements than what the
QP is configured.
IB_UNSUPPORTED
Atomics or Reliable datagram request is not supported by this HCA.
IB_INVALID_ADDR_HANDLE
Address handle supplied in the work request is invalid.
PORTABILITY
Kernel & User mode.
NOTES
Please refer to Table 81 and Table 82 for allowed operation types
on different types of queue pairs, and the different modifiers
acceptable for the work request for different QP service types.
SEE ALSO
uvp_post_recv, uvp_poll_cq
NAME
uvp_pre_allocate_pd -- Vendor-specific pre-ioctl function to allocate PD
SYNOPSIS
typedef ib_api_status_t
(*uvp_pre_allocate_pd) (
IN const uvp_ca_handle_t h_uvp_ca,
IN OUT ci_umv_buf_t *p_umv_buf);
DESCRIPTION
uvp_pre_allocate_pd() is implemented by vendor. It is the pre-ioctl routine
for the AL call ib_alloc_pd() in user-mode.
PARAMETERS
h_uvp_ca
[in]
Vendor's user-mode library CA handle.
p_umv_buf
[in out]
On input, UAL provides this buffer template.
On return from this function, p_umv_buf contains
any vendor-specific record to be exchanged with the vendor's
HCA driver.
RETURN VALUE
IB_SUCCESS
Vendor library successfully populated umv buffer with relevant info.
IB_INSUFFICIENT_RESOURCES
Insufficient resources in Vendor library to complete the call
PORTABILITY
User Mode
SEE ALSO
uvp_post_allocate_pd, uvp_post_deallocate_pd
NAME
uvp_pre_allocate_rdd -- Vendor-specific pre-ioctl function to allocate RDD
SYNOPSIS
typedef ib_api_status_t
(*uvp_pre_allocate_rdd) (
IN const uvp_ca_handle_t h_uvp_ca,
IN OUT ci_umv_buf_t *p_umv_buf);
DESCRIPTION
uvp_pre_allocate_rdd() is implemented by vendor. It is the pre-ioctl routine
for the AL call ib_alloc_rdd() in user-mode.
PARAMETERS
h_uvp_pd
[in]
Vendor's user-mode library PD handle.
p_umv_buf
[in out]
On input, UAL provides this buffer template.
On return from this function, p_umv_buf contains
any vendor-specific record to be exchanged with the vendor's
HCA driver.
RETURN VALUE
IB_SUCCESS
Vendor library successfully populated umv buffer with relevant info.
IB_INSUFFICIENT_RESOURCES
Insufficient resources in Vendor library to complete the call
PORTABILITY
User Mode
SEE ALSO
uvp_post_allocate_rdd, uvp_pre_deallocate_rdd, uvp_post_deallocate_rdd
NAME
uvp_pre_attach_mcast --
pre-ioctl function to Attach a queue pair to a multicast group
SYNOPSIS
typedef ib_api_status_t
(*uvp_pre_attach_mcast) (
IN const uvp_qp_handle_t h_uvp_qp,
IN const ib_gid_t *p_mcast_gid,
IN const uint16_t mcast_lid,
IN OUT ci_umv_buf_t *p_umv_buf);
DESCRIPTION
uvp_pre_attach_mcast() is the pre-ioctl routine implemented by vendor
to attach a queue pair to a multicast group.
PARAMETERS
h_uvp_qp
[in] Vendor's Queue pair handle (in user-mode library)
which needs to be added to the multicast group on the adapter.
mcast_lid
[in] The multicast group LID value.
p_mcast_gid
[in] IPv6 address associated with this multicast group.
p_umv_buf
[in out]
On input, UAL provides this buffer template.
On return from this function, p_umv_buf contains
any vendor-specific record to be exchanged with the vendor's
HCA driver.
RETURN VALUE
IB_SUCCESS
The queue pair handle was successfully added to the multicast
group.
IB_INVALID_QP_HANDLE
qp_handle supplied is invalid.
IB_INVALID_SERVICE_TYPE
Queue pair handle supplied is not of unreliable datagram type.
IB_INVALID_GID
The supplied addr is not a valid multicast ipv6 address.
PORTABILITY
User mode.
SEE ALSO
uvp_pre_create_qp, uvp_post_create_qp
uvp_pre_detach_mcast, uvp_post_detach_mcast
NOTES
TBD.....
NAME
uvp_pre_close_ca --
pre-ioctl function to close the access to adapter via this h_ca
SYNOPSIS
typedef ib_api_status_t
(*uvp_pre_close_ca) (
IN uvp_ca_handle_t h_uvp_ca);
DESCRIPTION
uvp_pre_close_ca() is implemented by vendor. It is the pre-ioctl routine
for the AL call ib_close_ca() in user-mode.
PARAMETERS
h_uvp_ca
[in] Vendor's user-mode library handle to the open instance of the CA
p_umv_buf
[in out]
On input, UAL provides this buffer template.
On return from this function, p_umv_buf contains
any vendor-specific record to be exchanged with the vendor's
HCA driver.
RETURN VALUE
IB_SUCCESS
Successfully completed the pre-ioctl.
IB_INSUFFICIENT_RESOURCES
Insufficient resources to satisfy request.
IB_INVALID_CA_HANDLE
Channel adapter handle was invalid.
PORTABILITY
User Mode
SEE ALSO
uvp_post_close_ca, uvp_pre_query_ca, uvp_post_query_ca,
uvp_pre_modify_ca, uvp_post_modify_ca
NAME
uvp_pre_create_av -- Vendor-specific pre-ioctl function to create AV
SYNOPSIS
typedef ib_api_status_t
(*uvp_pre_create_av) (
IN const uvp_pd_handle_t h_uvp_pd,
IN const ib_av_attr_t *p_addr_vector,
IN OUT ci_umv_buf_t *p_umv_buf);
DESCRIPTION
uvp_pre_create_av() is implemented by vendor. It is the pre-ioctl
routine for ib_create_av().
PARAMETERS
h_uvp_pd
[in] Vendor's user-mode library handle to the Protection domain
to which this AV is associated
p_addr_vector
[in] Parameters to create the address vector handle
p_umv_buf
[in out]
On input, UAL provides this buffer template.
On return from this function, p_umv_buf contains
any vendor-specific record to be exchanged with the vendor's
HCA driver.
RETURN VALUE
IB_SUCCESS
The create operation was successful
IB_INVALID_SETTING
Values in the vector is not valid
IB_INVALID_CA_HANDLE
h_ca is invalid
IB_INSUFFICIENT_RESOURCES
No more address handles are available
PORTABILITY
User Mode
SEE ALSO
uvp_post_create_av, uvp_pre_destroy_av, uvp_post_destroy_av
NAME
uvp_pre_create_cq --
pre-ioctl function to Create a completion queue (CQ)
on the specified HCA.
SYNOPSIS
typedef ib_api_status_t
(*uvp_pre_create_cq) (
IN const uvp_pd_handle_t h_uvp_pd, // or h_uvp_ca
IN OUT const uint32_t *p_size,
IN OUT ci_umv_buf_t *p_umv_buf);
DESCRIPTION
uvp_pre_create_cq() is implemented by vendor. It is the pre-ioctl routine
for ib_create_cq().
PARAMETERS
h_uvp_pd
[in] Vendor's handle to an existing protection domain (in user-mode
library)
p_size
[in out] Points to a variable containing the number of CQ entries
requested by the consumer.
On return, points to the size of the CQ that was created
by the provider.
ph_cq
[out] Vendor's Handle to the newly created CQ.
p_umv_buf
[in out]
On input, UAL provides this buffer template.
On return from this function, p_umv_buf contains
any vendor-specific record to be exchanged with the vendor's
HCA driver.
RETURN VALUE
IB_SUCCESS
The operation was successful.
IB_INVALID_PD_HANDLE
The h_uvp_pd passed is invalid.
IB_INVALID_CA_HANDLE (applicable if we pass the vendor's CA handle instead
<< applicable if we pass the vendor's CA handle instead of pd_handle >>
The h_uvp_ca passed is invalid.
IB_INSUFFICIENT_RESOURCES
Insufficient resources to complete request.
IB_INVALID_CQ_SIZE
Requested CQ Size is not supported.
PORTABILITY
User mode.
SEE ALSO
uvp_post_create_cq, uvp_pre_resize_cq, uvp_post_resize_cq,
uvp_pre_destroy_cq, uvp_post_destroy_cq
NAME
uvp_pre_create_eec -- pre-ioctl function to Create an EE context
SYNOPSIS
typedef ib_api_status_t
(*uvp_pre_create_eec) (
IN const uvp_rdd_handle_t h_uvp_rdd,
IN OUT ci_umv_buf_t *p_umv_buf);
DESCRIPTION
uvp_pre_create_eec() is implemented by vendor to create an EE context.
It is the pre-ioctl routine for ib_create_eec().
PARAMETERS
h_uvp_rdd
[in] Vendor's handle (in user-mode library) to the reliable datagram
domain to which this EE is associated with.
p_umv_buf
[in out]
On input, UAL provides this buffer template.
On return from this function, p_umv_buf contains
any vendor-specific record to be exchanged with the vendor's
HCA driver.
RETURN VALUE
IB_SUCCESS
The EE context is successfully created and the values returned
are valid.
IB_INVALID_RDD_HANDLE
rdd_handle passed is invalid.
IB_INSUFFICIENT_RESOURCES
Insufficient resources to complete request.
IB_UNSUPPORTED
RDD is not supported feature by this HCA.
PORTABILITY
User mode.
SEE ALSO
uvp_post_create_eec,
uvp_pre_destroy_eec, uvp_post_destroy_eec,
uvp_pre_query_eec, uvp_post_query_eec
NAME
uvp_pre_create_mw --
pre-ioctl function to create a memory window
SYNOPSIS
typedef ib_api_status_t
(*uvp_pre_create_mw) (
IN const uvp_pd_handle_t h_uvp_pd,
IN OUT ci_umv_buf_t *p_umv_buf);
DESCRIPTION
uvp_pre_create_mw() is implemented by vendor. It is the pre-ioctl routine
for ib_create_mw().
PARAMETERS
h_uvp_pd
[in] Vendor's Protection domain handle (in user-mode library)
to use for this memory window
p_umv_buf
[in out]
On input, UAL provides this buffer template.
On return from this function, p_umv_buf contains
any vendor-specific record to be exchanged with the vendor's
HCA driver.
RETURN VALUE
IB_SUCCESS
The memory window allocation completed successfully.
IB_INSUFFICIENT_RESOURCES
Not enough resources to complete the request.
IB_INVALID_PD_HANDLE
pd_handle supplied is invalid.
PORTABILITY
User mode
SEE ALSO
uvp_post_create_mw, uvp_pre_destroy_mw, uvp_post_destroy_mw
uvp_pre_query_mw, uvp_post_query_mw,
uvp_bind_mw
NAME
uvp_pre_create_qp --
pre-ioctl function to Create a Queue Pair for the specified HCA
SYNOPSIS
typedef ib_api_status_t
(*uvp_pre_create_qp) (
IN const uvp_pd_handle_t h_uvp_pd, // Fix me: if needed
IN const ib_qp_create_t *p_create_attr,
IN OUT ci_umv_buf_t *p_umv_buf);
DESCRIPTION
uvp_pre_create_qp() is implemented by vendor. It is the pre-ioctl routine
for ib_create_qp().
PARAMETERS
h_uvp_pd
[in] Vendor's Protection domain handle in user-mode library.
>>> Remove this param if the PD is part of ib_qp_create_t <<<
p_create_attr
[in] Initial attributes with which the qp must be created.
p_umv_buf
[in out]
On input, UAL provides this buffer template.
On return from this function, p_umv_buf contains
any vendor-specific record to be exchanged with the vendor's
HCA driver.
RETURN VALUE
IB_SUCCESS
The create operation was successful
IB_INVALID_PD_HANDLE
pd_handle supplied in the qp_create_attr is invalid
IB_INVALID_RDD_HANDLE
The reliable datagram domain to associate with the queue pair was
invalid.
IB_INVALID_CQ_HANDLE
The send or receive completion queue to associate with the queue pair
was invalid.
IB_INVALID_TYPE
The specified queue pair type was invalid.
IB_UNSUPPORTED
The specified queue pair type was not supported by the channel adapter.
IB_INVALID_MAX_WRS
The requested maximum send or receive work request depth could not be
supported.
IB_INVALID_MAX_SGE
The requested maximum number of scatter-gather entries for the send or
receive queue could not be supported.
PORTABILITY
User Mode
SEE ALSO
uvp_post_create_qp,
uvp_pre_destroy_qp, uvp_post_destroy_qp,
uvp_pre_modify_qp, uvp_post_modify_qp,
uvp_pre_query_qp, uvp_post_query_qp
NAME
uvp_pre_deallocate_pd -- Vendor-specific pre-ioctl function to deallocate PD
SYNOPSIS
typedef ib_api_status_t
(*uvp_pre_deallocate_pd) (
IN const uvp_pd_handle_t h_uvp_pd,
IN OUT ci_umv_buf_t *p_umv_buf);
DESCRIPTION
uvp_pre_deallocate_pd() is implemented by vendor. It is the pre-ioctl
routine for the AL call ib_deallocate_pd().
PARAMETERS
h_uvp_pd
[in]
Vendor's user-mode library PD handle.
p_umv_buf
[in out]
On input, UAL provides this buffer template.
On return from this function, p_umv_buf contains
any vendor-specific record to be exchanged with the vendor's
HCA driver.
RETURN VALUE
IB_SUCCESS
Vendor library successfully populated umv buffer with relevant info.
IB_INSUFFICIENT_RESOURCES
Insufficient resources in Vendor library to complete the call
PORTABILITY
User Mode
SEE ALSO
uvp_post_allocate_pd, uvp_pre_deallocate_pd, uvp_post_deallocate_pd
NAME
uvp_pre_deallocate_rdd -- Vendor-specific pre-ioctl function to
deallocate RDD.
SYNOPSIS
typedef ib_api_status_t
(*uvp_pre_deallocate_rdd) (
IN const uvp_rdd_handle_t h_uvp_rdd,
IN OUT ci_umv_buf_t *p_umv_buf);
DESCRIPTION
uvp_pre_deallocate_rdd() is implemented by vendor. It is the pre-ioctl
routine for the AL call ib_dealloc_rdd().
PARAMETERS
h_uvp_rdd
[in]
Vendor's user-mode library RDD handle.
p_umv_buf
[in out]
On input, UAL provides this buffer template.
On return from this function, p_umv_buf contains
any vendor-specific record to be exchanged with the vendor's
HCA driver.
RETURN VALUE
IB_SUCCESS
Vendor library successfully populated umv buffer with relevant info.
IB_INVALID_RDD_HANDLE
The RDD handle was invalid.
PORTABILITY
User Mode
SEE ALSO
uvp_pre_allocate_rdd, uvp_post_allocate_rdd,
NAME
uvp_pre_deregister_mr -- pre-ioctl to deRegister a memory region
SYNOPSIS
typedef ib_api_status_t
(*uvp_pre_deregister_mr) (
IN const uvp_mr_handle_t h_uvp_mr,
IN OUT ci_umv_buf_t *p_umv_buf);
DESCRIPTION
uvp_pre_deregister_mr() is implemented by vendor. It is the pre-ioctl
routine for ib_dereg_mr().
This routine deregisters a memory region from the HCA. The region can
de-registered only if there are no existing memory windows bound to
this region, and if no existing shared memory regions were registered
that refers to the same set of physical pages associated with mem_handle.
If there are outstanding work requests referring to this memory region, then
after this call is successful, those work requests will complete with
WRS_LOCAL_PROTECTION_ERR.
PARAMETERS
h_uvp_mr
[in] Vendor's Memory handle (in user-mode library)
that is being de-registered.
p_umv_buf
[in out]
On input, UAL provides this buffer template.
On return from this function, p_umv_buf contains
any vendor-specific record to be exchanged with the vendor's
HCA driver.
RETURN VALUE
IB_SUCCESS
The memory de-registration was successful
IB_INVALID_MR_HANDLE
mem_handle supplied is not a valid memory handle.
PORTABILITY
User mode
NOTES
SEE ALSO
uvp_pre_register_mr, uvp_post_register_mr,
uvp_pre_register_smr, uvp_post_register_smr
NAME
uvp_pre_destroy_av -- Vendor-specific pre-ioctl function to destroy AV
SYNOPSIS
typedef ib_api_status_t
(*uvp_pre_destroy_av) (
IN const uvp_av_handle_t h_uvp_av,
IN OUT ci_umv_buf_t *p_umv_buf);
DESCRIPTION
uvp_pre_destroy_av() is implemented by vendor to destroy the AV.
It is the pre-ioctl routine for ib_destroy_av().
PARAMETERS
h_uvp_av
[in] Vendor's AV handle in user-mode library.
p_umv_buf
[in out]
On input, UAL provides this buffer template.
On return from this function, p_umv_buf contains
any vendor-specific record to be exchanged with the vendor's
HCA driver.
RETURN VALUE
IB_SUCCESS
The create operation was successful
IB_INVALID_ADDR_HANDLE
Address handle supplied is not valid.
PORTABILITY
User Mode
SEE ALSO
uvp_post_destroy_av,
uvp_pre_create_av, uvp_post_create_av,
uvp_pre_modify_av, uvp_post_modify_av
NAME
uvp_pre_destroy_cq --
pre-ioctl function to Destroy the specified Completion Queue
SYNOPSIS
typedef ib_api_status_t
(*uvp_pre_destroy_cq) (
IN const uvp_cq_handle_t h_uvp_cq,
IN OUT ci_umv_buf_t *p_umv_buf);
DESCRIPTION
uvp_pre_destroy_cq() is implemented by vendor to destroy CQ.
It is the pre-ioctl routine for ib_destroy_cq().
PARAMETERS
h_uvp_cq
[in] Vendor's Handle to the cq (in user-mode library)
that needs to be destroyed.
p_umv_buf
[in out]
On input, UAL provides this buffer template.
On return from this function, p_umv_buf contains
any vendor-specific record to be exchanged with the vendor's
HCA driver.
RETURN VALUE
IB_SUCCESS
IB_INVALID_CQ_HANDLE
The handle passed is invalid.
IB_RESOURCE_BUSY
Queue pairs may still be bound to this completion queue.
PORTABILITY
User mode.
SEE ALSO
uvp_post_destroy_cq,
uvp_pre_create_cq, uvp_post_create_cq,
uvp_pre_resize_cq, uvp_post_resize_cq,
uvp_pre_query_cq, uvp_post_query_cq
NAME
uvp_pre_destroy_eec -- pre-ioctl to Destroy an EE context
SYNOPSIS
typedef ib_api_status_t
(*uvp_pre_destroy_eec) (
IN const uvp_eec_handle_t h_uvp_eec,
IN OUT ci_umv_buf_t *p_umv_buf);
DESCRIPTION
uvp_pre_destroy_eec() is implemented by the vendor to destroy an EE.
It is the pre-ioctl routine for ib_destroy_eec().
PARAMETERS
h_uvp_eec
[in] Vendor's handle (in user-mode library) to EE
p_umv_buf
[in out]
On input, UAL provides this buffer template.
On return from this function, p_umv_buf contains
any vendor-specific record to be exchanged with the vendor's
HCA driver.
RETURN VALUE
IB_SUCCESS
IB_INVALID_HANDLE
The specified eec_handle is not valid.
IB_UNSUPPORTED
This Channel Interface does not support reliable datagram service type.
PORTABILITY
User mode.
NOTES
SEE ALSO
uvp_post_destroy_eec,
uvp_pre_create_eec, uvp_post_create_eec
NAME
uvp_pre_destroy_mw --
pre-ioctl function to destroy a memory window
SYNOPSIS
typedef ib_api_status_t
(*uvp_pre_destroy_mw) (
IN const uvp_mw_handle_t h_uvp_mw,
IN OUT ci_umv_buf_t *p_umv_buf);
DESCRIPTION
uvp_pre_destroy_mw() is implemented by vendor. It is the pre-ioctl routine
for ib_destroy_mw().
PARAMETERS
h_uvp_mw
[in] Vendor's handle (in user-mode library) to the memory window
p_umv_buf
[in out]
On input, UAL provides this buffer template.
On return from this function, p_umv_buf contains
any vendor-specific record to be exchanged with the vendor's
HCA driver.
RETURN VALUE
IB_SUCCESS
pre-ioctl succeeded.
IB_INVALID_MW_HANDLE
mw_handle supplied is invalid.
PORTABILITY
User mode
SEE ALSO
uvp_post_destroy_mw,
uvp_pre_query_mw, uvp_post_query_mw,
uvp_bind_mw
NAME
uvp_pre_destroy_qp --
pre-ioctl function to Destroy the specified Queue Pair.
SYNOPSIS
typedef ib_api_status_t
(*uvp_pre_destroy_qp) (
IN const uvp_qp_handle_t h_uvp_qp,
IN OUT ci_umv_buf_t *p_umv_buf);
DESCRIPTION
uvp_pre_destroy_qp() is the pre-ioctl routine implemented by vendor
to destroy QP.
UAL invokes this pre-ioctl routine to destroy QP.
The vendor is expected to perform any preliminary steps in preparation
for destroying the QP and perform any book-keeping.
Upon return from the pre-ioctl function, UAL packages up the UMV buffer
in an IOCTL and passes it on to the user-mode proxy. User-mode proxy
invokes the AL QP modify ib_destroy_qp() in the kernel-mode.
PARAMETERS
h_uvp_qp
[in] Vendor's Handle to the qp (in user-mode library)
that needs to be destroyed.
p_umv_buf
[in out]
On input, UAL provides this buffer template.
On return from this function, p_umv_buf contains
any vendor-specific record to be exchanged with the vendor's
HCA driver.
RETURN VALUE
IB_SUCCESS
IB_INVALID_QP_HANDLE
The handle passed is invalid.
IB_RESOURCE_BUSY
If the queue pair is a unreliable datagram service type, and
is still bound to a multicast group.
PORTABILITY
User mode.
SEE ALSO
uvp_post_destroy_qp,
uvp_pre_create_qp, uvp_post_create_qp,
uvp_pre_modify_qp, uvp_post_modify_qp,
uvp_pre_query_qp, uvp_post_query_qp
NAME
uvp_pre_detach_mcast --
pre-ioctl function to detach a queue pair to a multicast group
SYNOPSIS
typedef ib_api_status_t
(*uvp_pre_detach_mcast) (
IN uvp_mcast_handle_t h_uvp_mcast,
IN OUT ci_umv_buf_t *p_umv_buf);
DESCRIPTION
uvp_pre_attach_mcast() is the pre-ioctl routine implemented by vendor
to attach a queue pair to a multicast group.
Upon return from the pre-ioctl function, UAL packages up the UMV buffer
in an IOCTL and passes it on to the user-mode proxy. UAL passes the
info to the user-mode proxy stating that it no longer wishes to receive
callback for mcast join for the caller. Note that UAL takes care of
handling callbcak.
This routine detaches the given qp_handle to a multicast gid as specified
by mcast_gid parameter.
PARAMETERS
h_uvp_mcast
[in] Vendor's Multicast handle (in user-mode library)
holding the association of this queue pair to the multicast group.
p_umv_buf
[in out]
On input, UAL provides this buffer template.
On return from this function, p_umv_buf contains
any vendor-specific record to be exchanged with the vendor's
HCA driver.
RETURN VALUE
IB_SUCCESS
The queue pair handle was successfully added to the multicast
group.
IB_INVALID_MCAST_HANDLE
h_uvp_mcast supplied is invalid.
PORTABILITY
Kernel & User mode.
SEE ALSO
uvp_pre_create_qp, uvp_post_create_qp
uvp_post_detach_mcast
NOTES
TBD.....
NAME
uvp_pre_modify_av -- Vendor-specific pre-ioctl function to modify AV
SYNOPSIS
typedef ib_api_status_t
(*uvp_pre_modify_av) (
IN const uvp_av_handle_t h_uvp_av,
IN const ib_av_attr_t *p_addr_vector,
IN OUT ci_umv_buf_t *p_umv_buf);
DESCRIPTION
uvp_pre_modify_av() is implemented by vendor. It is the pre-ioctl routine
for ib_modify_av().
PARAMETERS
h_uvp_av
[in] Vendor's AV handle in user-mode library.
p_addr_vector
[in] Parameters to modify the address vector handle
p_umv_buf
[in out]
On input, UAL provides this buffer template.
On return from this function, p_umv_buf contains
any vendor-specific record to be exchanged with the vendor's
HCA driver.
RETURN VALUE
IB_SUCCESS
The create operation was successful
IB_INVALID_SETTING
Values in the vector is not valid
IB_INVALID_ADDR_HANDLE
h_uvp_av is invalid
IB_INSUFFICIENT_RESOURCES
No more address handles are available
PORTABILITY
User Mode
SEE ALSO
uvp_pre_create_av, uvp_post_create_av,uvp_pre_destroy_av,
uvp_post_destroy_av
NAME
Vendor-specific pre-ioctl operation for user-mode ib_modify_ca()
SYNOPSIS
typedef ib_api_status_t
(*uvp_pre_modify_ca) (
IN uvp_ca_handle_t h_uvp_ca,
IN uint8_t port_num,
IN ib_ca_mod_t ca_mod,
IN const ib_port_attr_mod_t* const p_port_attr_mod);
DESCRIPTION
uvp_pre_modify_ca() is implemented by vendor. It is the pre-ioctl routine
for the AL call ib_modify_ca() in user-mode.
PARAMETERS
h_uvp_ca
[in] Vendor's user-mode library handle to the open instance of the CA
port_num
[in] An index to the port that is being modified. The port_num matches
the index of the port as returned through the ib_query_ca call.
ca_mod
[in] A mask of the attributes and counters to modify.
p_port_attr_mod
[in] A list of the specific port attribute information to modify. For
the access layer to modify an attribute, its corresponding bit must be
set in the ca_mod parameter.
p_umv_buf
[in out]
On input, it contains any vendor-specific private information
exchanged with the vendor's Verbs Provider Driver (uvp_pre_open_ca).
Vendor is expected to check vendor-specific status in
umv_buf as appropriate.
RETURN VALUE
IB_SUCCESS
The pre-ioctl function succeeded.
IB_INVALID_CA_HANDLE
CA handle was invalid
PORTABILITY
User Mode
SEE ALSO
uvp_pre_open_ca, uvp_post_open_ca,
uvp_post_modify_ca,
uvp_pre_close_ca, uvp_post_close_ca
NAME
uvp_pre_modify_eec -- pre-ioctl to Modify the attributes of an EE
SYNOPSIS
typedef ib_api_status_t
(*uvp_pre_modify_eec) (
IN const uvp_eec_handle_t h_uvp_eec,
IN const ib_eec_mod_t *p_modify_attr,
IN OUT ci_umv_buf_t *p_umv_buf);
DESCRIPTION
uvp_pre_modify_eec() is implemented by the vendor to modify the
attributes of an EE. It is the pre-ioctl routine for ib_modify_eec().
PARAMETERS
h_uvp_eec
[in] Vendor's handle (in user-mode library) to EE
p_modify_attr
[in] Values to be used to modify the attributes of the EE.
p_umv_buf
[in out]
On input, UAL provides this buffer template.
On return from this function, p_umv_buf contains
any vendor-specific record to be exchanged with the vendor's
HCA driver.
RETURN VALUE
IB_SUCCESS
The call completed successfully.
IB_INVALID_HANDLE
eec_handle is invalid.
IB_INVALID_STATE
One or more of the attributes specified are not compatible with the
state change being performed on this EE.
IB_UNSUPPORTED
Reliable datagram operation is not supported.
IB_INVALID_PARAMETER
Invalid command mask specified in the ee_modify_attr.
PORTABILITY
User mode.
NOTES
SEE ALSO
uvp_post_modify_eec,
uvp_pre_create_eec, uvp_post_create_eec,
uvp_pre_query_eec, uvp_post_query_eec
NAME
uvp_pre_modify_mr -- pre-ioctl routine to modify the attributes of a
a registered memory region with a HCA
SYNOPSIS
typedef ib_api_status_t
(*uvp_pre_modify_mr) (
IN const uvp_mr_handle_t h_uvp_mr,
IN const uvp_pd_handle_t h_uvp_pd OPTIONAL,
IN const ib_mr_mod_t mr_mod_mask,
IN const ib_mr_create_t *p_mr_create OPTIONAL,
IN OUT ci_umv_buf_t *p_umv_buf);
DESCRIPTION
uvp_pre_modify_mr() is implemented by the vendor to modify the
attributes of a registered memory region.
It is the pre-ioctl routine for ib_modify_mr().
PARAMETERS
h_uvp_mr
[in] Vendor's Handle (in user-mode library)
to the registered memory region.
h_uvp_pd
[in] Vendor's handle (in user-mode library) to PD on which memory
is being registered
mem_modify_req
[in] Command specifying which parts of the mem_region is valid. The
command is specified as a bit mask.
p_mr_create
[in] Desired attributes that need to be modified for mem_handle.
p_umv_buf
[in out]
On input, UAL provides this buffer template.
On return from this function, p_umv_buf contains
any vendor-specific record to be exchanged with the vendor's
HCA driver.
RETURN VALUE
IB_SUCCESS
The modify memory region request completed successfully.
IB_RESOURCE_BUSY
The memory region has windows bound to it.
IB_INSUFFICIENT_RESOURCES
Insufficient resources to complete the request.
IB_INVALID_MR_HANDLE
mem_handle supplied is not a valid memory region handle.
IB_INVALID_PERMISSION
Invalid access rights specified.
IB_INVALID_PARAMETER
Address, Length or specified modify mask is invalid.
PORTABILITY
User mode.
NOTES
SEE ALSO
uvp_post_modify_mr,
uvp_pre_register_mr, uvp_post_register_mr,
uvp_pre_deregister_mr, uvp_post_deregister_mr
NAME
uvp_pre_modify_qp --
pre-ioctl function to Modify attributes of the specified QP.
SYNOPSIS
typedef ib_api_status_t
(*uvp_pre_modify_qp) (
IN const uvp_qp_handle_t h_uvp_qp,
IN const ib_qp_mod_t *p_modify_attr, // Fixme
IN OUT ci_umv_buf_t *p_umv_buf);
DESCRIPTION
uvp_pre_modify_qp() is implemented by vendor to modify the attributes of a
QP. It is the pre-ioctl routine for ib_modify_qp().
PARAMETERS
h_uvp_qp
[in] Vendor's qp Handle to the queue pair (in user-mode library)
whose state is to be modified.
p_modify_attr
[in] Specifies what attributes need to be modified in the qp.
p_umv_buf
[in out]
On input, UAL provides this buffer template.
On return from this function, p_umv_buf contains
any vendor-specific record to be exchanged with the vendor's
HCA driver.
RETURN VALUE
IB_SUCCESS
The operation was successful and the QP attributes are modified
to the requested state.
IB_INSUFFICIENT_RESOURCES
Insufficient resources to complete the requested operation.
IB_INVALID_QP_HANDLE
Invalid QP handle was passed.
IB_UNSUPPORTED
Requested operation is not supported, for e.g. Atomic operations.
IB_QP_INVALID_STATE
Invalid state transition request. Current QP state not in allowable
state.
IB_INVALID_PKEY
Pkey specified in modify request not valid entry in P_KEY table. Or
index is out of range.
IB_INVALID_PMIG_STATE
Invalid path migration state specified in the request.
PORTABILITY
User mode
NOTES
Refer to Table 79 in chapter 11, Volume 1 of the InfiniBand Specifications.
Revisit the return values for user-mode
SEE ALSO
uvp_post_modify_qp, uvp_pre_create_qp, uvp_post_create_qp,
uvp_pre_query_qp, uvp_post_create_qp
NAME
Vendor-specific pre-ioctl operation for user-mode ib_open_ca()
SYNOPSIS
typedef ib_api_status_t
(*uvp_pre_open_ca) (
IN const ib_net64_t ca_guid);
DESCRIPTION
uvp_pre_open_ca() is implemented by vendor. It is the pre-ioctl routine
for the AL call ib_open_ca() in user-mode.
PARAMETERS
ca_guid
[in] The HCA adapter's EUI64 identifier. Clients would use other
enumeration API's to locate all available adapters and their
guids in a system, e.g. GetCaGuids(), maintained by the IB
Access Layer.
p_umv_buf
[in out]
On input, UAL provides this buffer template.
On return from this function, p_umv_buf contains
any vendor-specific record to be exchanged with the vendor's
HCA driver.
RETURN VALUE
IB_SUCCESS
The pre-ioctl function succeeded.
IB_INSUFFICIENT_RESOURCES
Insufficient resources to satisfy request.
PORTABILITY
User Mode
SEE ALSO
uvp_post_open_ca, uvp_pre_query_ca, uvp_post_query_ca, uvp_pre_modify_ca,
uvp_post_modify_ca, uvp_pre_close_ca, uvp_post_close_ca
NAME
Vendor-specific pre-ioctl operation for user-mode ib_query_ca()
UAL passes the query to user-mode proxy via IOCTL to KAL (to VPD).
SYNOPSIS
typedef ib_api_status_t
(*uvp_pre_query_av) (
IN uvp_av_handle_t h_uvp_av,
IN OUT ci_umv_buf_t *p_umv_buf);
DESCRIPTION
uvp_pre_query_av() is implemented by vendor. It is the pre-ioctl routine
for the AL call ib_query_av() in user-mode.
PARAMETERS
h_uvp_av
[in] Vendor's handle to the address vector in user-mode library
p_umv_buf
[in out]
On input, UAL provides this buffer template.
On return from this function, p_umv_buf contains
any vendor-specific record to be exchanged with the vendor's
HCA driver.
RETURN VALUE
IB_SUCCESS
The pre-ioctl function succeeded.
IB_INVALID_AV_HANDLE
AV handle was invalid
PORTABILITY
User Mode
SEE ALSO
uvp_pre_create_av, uvp_post_create_av,
uvp_post_query_av,
uvp_pre_modify_av, uvp_post_modify_av
NAME
Vendor-specific pre-ioctl operation for user-mode ib_query_ca()
SYNOPSIS
typedef ib_api_status_t
(*uvp_pre_query_ca) (
IN uvp_ca_handle_t h_uvp_ca,
IN OUT ci_umv_buf_t *p_umv_buf);
DESCRIPTION
uvp_pre_query_ca() is implemented by vendor. It is the pre-ioctl routine
for the AL call ib_query_ca() in user-mode.
PARAMETERS
h_uvp_ca
[in] Vendor's user-mode library handle to the open instance of the CA
p_umv_buf
[in out]
On input, UAL provides this buffer template.
On return from this function, p_umv_buf contains
any vendor-specific record to be exchanged with the vendor's
HCA driver.
RETURN VALUE
IB_SUCCESS
The pre-ioctl function succeeded.
IB_INVALID_CA_HANDLE
CA handle was invalid
PORTABILITY
User Mode
SEE ALSO
uvp_pre_open_ca, uvp_post_open_ca,
uvp_post_query_ca,
uvp_pre_close_ca, uvp_post_close_ca
NAME
uvp_pre_query_cq --
pre-ioctl to Query the number of entries configured for the CQ.
Can we always go to the kernel to query even if it is created
in vendor library in user-mode?
SYNOPSIS
typedef ib_api_status_t
(*uvp_pre_query_cq) (
IN const uvp_cq_handle_t h_uvp_cq,
IN OUT ci_umv_buf_t *p_umv_buf);
DESCRIPTION
uvp_pre_query_cq() is implemented by vendor. It is the pre-ioctl routine
for ib_query_cq().
PARAMETERS
h_uvp_cq
[in] Vendor's Handle to the already created CQ (in user-mode library).
p_size
[out] Points to a variable containing CQ size.
Must be non-zero if the vendor's pre-ioctl knows the CQ size.
p_umv_buf
[in out]
On input, UAL provides this buffer template.
On return from this function, p_umv_buf contains
any vendor-specific record to be exchanged with the vendor's
HCA driver.
RETURN VALUE
IB_SUCCESS
The operation was successful.
IB_INVALID_CQ_HANDLE
The CQ handle is invalid.
PORTABILITY
User mode.
SEE ALSO
uvp_post_query_cq(),
uvp_pre_create_cq, uvp_post_create_cq,
uvp_pre_resize_cq, uvp_post_resize_cq
uvp_pre_destroy_cq, uvp_post_destroy_cq
NAME
uvp_pre_query_eec -- pre-ioctl to Query attributes of an EE context
UAL passes the query_eec parameters to user-mode proxy via
IOCTL to KAL (to VPD).
SYNOPSIS
typedef ib_api_status_t
(*uvp_pre_query_eec) (
IN const uvp_eec_handle_t h_uvp_eec,
IN OUT ci_umv_buf_t *p_umv_buf);
DESCRIPTION
uvp_pre_query_eec() is implemented by the vendor to query the
attributes of an EE context.
It is the pre-ioctl routine for ib_query_eec().
PARAMETERS
h_uvp_eec
[in] Vendor's handle (in user-mode library) to EE
p_umv_buf
[in out]
On input, UAL provides this buffer template.
On return from this function, p_umv_buf contains
any vendor-specific record to be exchanged with the vendor's
HCA driver.
RETURN VALUE
IB_SUCCESS
The EE context is successfully created and the values returned
are valid.
IB_INVALID_HANDLE
rdd_handle passed is invalid.
IB_UNSUPPORTED
RDD is not supported feature by this HCA.
PORTABILITY
User mode.
SEE ALSO
uvp_post_query_eec,
uvp_pre_create_eec, uvp_post_create_eec,
uvp_pre_destroy_eec, uvp_post_destroy_eec,
NAME
uvp_pre_query_mr -- pre-ioctl to Query a memory region with HCA
SYNOPSIS
typedef ib_api_status_t
(*uvp_pre_query_mr) (
IN const uvp_mr_handle_t h_uvp_mr,
IN OUT ci_umv_buf_t *p_umv_buf);
DESCRIPTION
uvp_pre_query_mr is implemented by the vendor to query the memory region.
It is the pre-ioctl routine for ib_query_mr().
PARAMETERS
h_uvp_mr
[in] Vendor's Handle (in user-mode library)
to the registered memory region.
p_umv_buf
[in out]
On input, UAL provides this buffer template.
On return from this function, p_umv_buf contains
any vendor-specific record to be exchanged with the vendor's
HCA driver.
RETURN VALUE
IB_SUCCESS
The routine completed successfully and attributes returned
are valid.
IB_INVALID_MR_HANDLE
mem_handle is not valid.
PORTABILITY
User mode.
In user mode, proper ownership is determined before passing handles
down to kernel to protect from rogue applications.
SEE ALSO
uvp_post_query_mr,
uvp_pre_register_mr, uvp_post_register_mr
uvp_pre_deregister_mr, uvp_post_deregister_mr
NAME
uvp_pre_query_mw -- pre-ioctl to Query a memory window
SYNOPSIS
typedef ib_api_status_t
(*uvp_pre_query_mw) (
IN const uvp_mw_handle_t h_uvp_mw,
IN OUT ci_umv_buf_t *p_umv_buf);
DESCRIPTION
uvp_pre_query_mw is implemented by vendor. It is the pre-ioctl routine
for ib_query_mw().
PARAMETERS
h_uvp_mw
[in] Vendor's Memory window handle (in user-mode library)
whose attributes are being retrieved.
p_umv_buf
[in out]
On input, UAL provides this buffer template.
On return from this function, p_umv_buf contains
any vendor-specific record to be exchanged with the vendor's
HCA driver.
RETURN VALUE
IB_SUCCESS
The query operation completed successfully.
IB_INVALID_MW_HANDLE
mw_handle supplied is an invalid handle
PORTABILITY
User mode
SEE ALSO
uvp_post_query_mw,
uvp_pre_create_mw, uvp_post_create_mw,
uvp_bind_mw
NAME
uvp_pre_query_qp --
pre-ioctl function to Query the attributes of the QP
SYNOPSIS
typedef ib_api_status_t
(*uvp_pre_query_qp) (
IN uvp_qp_handle_t h_uvp_qp,
IN OUT ci_umv_buf_t *p_umv_buf);
DESCRIPTION
uvp_pre_query_qp() is implemented by vendor. It is the pre-ioctl routine
for the AL call ib_query_qp().
PARAMETERS
h_uvp_qp
[in] Vendor's handle to the QP (in user-mode library).
p_umv_buf
[in out]
On input, UAL provides this buffer template.
On return from this function, p_umv_buf contains
any vendor-specific record to be exchanged with the vendor's
HCA driver.
RETURN VALUE
IB_SUCCESS
The pre-ioctl function succeeded.
IB_INVALID_QP_HANDLE
QP handle was invalid
PORTABILITY
User Mode
SEE ALSO
uvp_pre_create_qp, uvp_post_create_qp,
uvp_post_query_qp,
uvp_pre_modify_qp, uvp_post_modify_qp
NAME
uvp_pre_register_mr -- pre-ioctl routine to
Register a memory region with HCA
SYNOPSIS
typedef ib_api_status_t
(*uvp_pre_register_mr) (
IN const uvp_pd_handle_t h_uvp_pd,
IN const ib_mr_create_t *p_mr_create,
IN OUT ci_umv_buf_t *p_umv_buf);
DESCRIPTION
uvp_pre_register_mr() is implemented by the vendor to register memory
region. It is the pre-ioctl routine for ib_reg_mem().
PARAMETERS
h_uvp_pd
[in] Vendor's handle (in user-mode library) to PD on which memory
is being registered
p_mr_create
[in] Holds the attributes for the region being registered.
p_umv_buf
[in out]
On input, UAL provides this buffer template.
On return from this function, p_umv_buf contains
any vendor-specific record to be exchanged with the vendor's
HCA driver.
RETURN VALUE
IB_SUCCESS
Registration with the adapter was successful.
IB_INSUFFICIENT_RESOURCES
Insufficient resources to satisfy request.
IB_INVALID_PARAMETER
Invalid length or address in mem_region.
IB_INVALID_PD_HANDLE
Invalid mr_pdhandle
IB_INVALID_PERMISSION
Invalid access rights.
PORTABILITY
User mode.
NOTES
SEE ALSO
uvp_post_register_mr,
uvp_pre_deregister_mr, uvp_post_deregister_mr
uvp_pre_modify_mr, uvp_post_modify_mr
NAME
uvp_pre_register_smr -- pre-ioctl to register a memory region
using same physical pages as an existing memory region.
SYNOPSIS
typedef ib_api_status_t
(*uvp_pre_register_smr) (
IN const uvp_pd_handle_t h_uvp_pd,
IN const uvp_mr_handle_t h_uvp_mr,
IN const ib_access_t access_ctrl,
IN void* p_vaddr,
IN OUT ci_umv_buf_t *p_umv_buf);
DESCRIPTION
uvp_pre_register_smr is implemented by vendor to register a new memory
region but shares the same set of physical pages associated with
memory handle. It is the pre-ioctl routine for ib_reg_shared().
=========================================================================
Store the ib_mr_create_t in umv_buf?
For user mode applications the
process *must* be owning mem_handle for this call to be successful.
Checking validity in proxy is enough or AL has some checks?
Resolve: ib_hca.h possibly could return INVALID_PD_HANDLE. Where is the PD?
=========================================================================
PARAMETERS
h_uvp_mr
[in] Vendor's Handle (in user-mode library)
to the registered memory region.
access_ctrl
[in] The access control for the new region.
p_umv_buf
[in out]
On input, UAL provides this buffer template.
On return from this function, p_umv_buf contains
any vendor-specific record to be exchanged with the vendor's
HCA driver.
RETURN VALUE
IB_SUCCESS
The call is successful and a new region handle returned is valid.
IB_INVALID_MR_HANDLE
mr_handle is invalid.
IB_INVALID_PERMISSION
Invalid access rights passed in mr_access.
PORTABILITY
User mode
NOTES
ISSUE: how to deal with uvp_deregister_mr, uvp_modify_mr
should we treat them as memory windows and fail those if a shared region
was registered?
SEE ALSO
uvp_post_register_smr,
uvp_pre_register_mr, uvp_post_register_mr,
uvp_pre_modify_mr, uvp_post_modify_mr
NAME
uvp_pre_resize_cq --
pre-ioctl function to resize a CQ on the specified HCA.
SYNOPSIS
typedef ib_api_status_t
(*uvp_pre_resize_cq) (
IN const uvp_cq_handle_t h_uvp_cq,
IN OUT const uint32_t *p_size,
IN OUT ci_umv_buf_t *p_umv_buf);
DESCRIPTION
uvp_pre_resize_cq() is implemented by vendor to resize the CQ.
It is the pre-ioctl routine for ib_resize_cq().
PARAMETERS
h_uvp_cq
[out] Vendor's Handle to the already created CQ (in user-mode library).
p_size
[in out]
On input, points to a variable containing the number of CQ entries
requested by the consumer.
On completion points to the size of the CQ that was resized by
the provider.
p_umv_buf
[in out]
On input, UAL provides this buffer template.
On return from this function, p_umv_buf contains
any vendor-specific record to be exchanged with the vendor's
HCA driver.
RETURN VALUE
IB_SUCCESS
The operation was successful.
IB_INVALID_CQ_HANDLE
The CQ handle is invalid.
IB_INSUFFICIENT_RESOURCES
Insufficient resources to complete request.
IB_INVALID_CQ_SIZE
Requested CQ Size is not supported.
IB_OVERFLOW
The CQ has more entries than the resize request. The CQ is not
modified, and old entries still exist.
PORTABILITY
User mode.
SEE ALSO
uvp_pre_create_cq, uvp_post_create_cq, uvp_post_resize_cq,
uvp_pre_destroy_cq, uvp_post_destroy_cq