Generated from ib_uvp.h with ROBODoc v3.2.3 on Sat Jan 18 07:05:16 2003

TABLE OF CONTENTS

  1. UAL_UVP_Interface/Overview user-mode Verbs
  2. user-mode Verbs/unsupported functions
  3. user-mode Verbs/uvp_bind_mw
  4. user-mode Verbs/uvp_enable_cq_notify
  5. user-mode Verbs/uvp_err_handler
  6. user-mode Verbs/uvp_get_interface
  7. user-mode Verbs/uvp_interface_t
  8. user-mode Verbs/uvp_poll_cq
  9. user-mode Verbs/uvp_post_allocate_pd
  10. user-mode Verbs/uvp_post_allocate_rdd
  11. user-mode Verbs/uvp_post_attach_mcast
  12. user-mode Verbs/uvp_post_close_ca
  13. user-mode Verbs/uvp_post_create_av
  14. user-mode Verbs/uvp_post_create_cq
  15. user-mode Verbs/uvp_post_create_eec
  16. user-mode Verbs/uvp_post_create_mw
  17. user-mode Verbs/uvp_post_create_qp
  18. user-mode Verbs/uvp_post_deallocate_pd
  19. user-mode Verbs/uvp_post_deallocate_rdd
  20. user-mode Verbs/uvp_post_deregister_mr
  21. user-mode Verbs/uvp_post_destroy_av
  22. user-mode Verbs/uvp_post_destroy_cq
  23. user-mode Verbs/uvp_post_destroy_eec
  24. user-mode Verbs/uvp_post_destroy_mw
  25. user-mode Verbs/uvp_post_destroy_qp
  26. user-mode Verbs/uvp_post_detach_mcast
  27. user-mode Verbs/uvp_post_modify_av
  28. user-mode Verbs/uvp_post_modify_ca
  29. user-mode Verbs/uvp_post_modify_eec
  30. user-mode Verbs/uvp_post_modify_mr
  31. user-mode Verbs/uvp_post_modify_qp
  32. user-mode Verbs/uvp_post_open_ca
  33. user-mode Verbs/uvp_post_query_av
  34. user-mode Verbs/uvp_post_query_ca
  35. user-mode Verbs/uvp_post_query_cq
  36. user-mode Verbs/uvp_post_query_eec
  37. user-mode Verbs/uvp_post_query_mr
  38. user-mode Verbs/uvp_post_query_mw
  39. user-mode Verbs/uvp_post_query_qp
  40. user-mode Verbs/uvp_post_recv
  41. user-mode Verbs/uvp_post_register_mr
  42. user-mode Verbs/uvp_post_register_smr
  43. user-mode Verbs/uvp_post_resize_cq
  44. user-mode Verbs/uvp_post_send
  45. user-mode Verbs/uvp_pre_allocate_pd
  46. user-mode Verbs/uvp_pre_allocate_rdd
  47. user-mode Verbs/uvp_pre_attach_mcast
  48. user-mode Verbs/uvp_pre_close_ca
  49. user-mode Verbs/uvp_pre_create_av
  50. user-mode Verbs/uvp_pre_create_cq
  51. user-mode Verbs/uvp_pre_create_eec
  52. user-mode Verbs/uvp_pre_create_mw
  53. user-mode Verbs/uvp_pre_create_qp
  54. user-mode Verbs/uvp_pre_deallocate_pd
  55. user-mode Verbs/uvp_pre_deallocate_rdd
  56. user-mode Verbs/uvp_pre_deregister_mr
  57. user-mode Verbs/uvp_pre_destroy_av
  58. user-mode Verbs/uvp_pre_destroy_cq
  59. user-mode Verbs/uvp_pre_destroy_eec
  60. user-mode Verbs/uvp_pre_destroy_mw
  61. user-mode Verbs/uvp_pre_destroy_qp
  62. user-mode Verbs/uvp_pre_detach_mcast
  63. user-mode Verbs/uvp_pre_modify_av
  64. user-mode Verbs/uvp_pre_modify_ca
  65. user-mode Verbs/uvp_pre_modify_eec
  66. user-mode Verbs/uvp_pre_modify_mr
  67. user-mode Verbs/uvp_pre_modify_qp
  68. user-mode Verbs/uvp_pre_open_ca
  69. user-mode Verbs/uvp_pre_query_av
  70. user-mode Verbs/uvp_pre_query_ca
  71. user-mode Verbs/uvp_pre_query_cq
  72. user-mode Verbs/uvp_pre_query_eec
  73. user-mode Verbs/uvp_pre_query_mr
  74. user-mode Verbs/uvp_pre_query_mw
  75. user-mode Verbs/uvp_pre_query_qp
  76. user-mode Verbs/uvp_pre_register_mr
  77. user-mode Verbs/uvp_pre_register_smr
  78. user-mode Verbs/uvp_pre_resize_cq

UAL_UVP_Interface/Overview user-mode Verbs

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.


user-mode Verbs/unsupported functions

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


user-mode Verbs/uvp_bind_mw

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


user-mode Verbs/uvp_enable_cq_notify

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


user-mode Verbs/uvp_err_handler

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


user-mode Verbs/uvp_get_interface

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


user-mode Verbs/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;    

user-mode Verbs/uvp_poll_cq

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


user-mode Verbs/uvp_post_allocate_pd

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

user-mode Verbs/uvp_post_allocate_rdd

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

user-mode Verbs/uvp_post_attach_mcast

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


user-mode Verbs/uvp_post_close_ca

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

user-mode Verbs/uvp_post_create_av

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

user-mode Verbs/uvp_post_create_cq

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


user-mode Verbs/uvp_post_create_eec

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


user-mode Verbs/uvp_post_create_mw

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


user-mode Verbs/uvp_post_create_qp

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

user-mode Verbs/uvp_post_deallocate_pd

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

user-mode Verbs/uvp_post_deallocate_rdd

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

user-mode Verbs/uvp_post_deregister_mr

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



user-mode Verbs/uvp_post_destroy_av

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

user-mode Verbs/uvp_post_destroy_cq

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


user-mode Verbs/uvp_post_destroy_eec

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


user-mode Verbs/uvp_post_destroy_mw

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


user-mode Verbs/uvp_post_destroy_qp

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.


user-mode Verbs/uvp_post_detach_mcast

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


user-mode Verbs/uvp_post_modify_av

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

user-mode Verbs/uvp_post_modify_ca

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

user-mode Verbs/uvp_post_modify_eec

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


user-mode Verbs/uvp_post_modify_mr

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


user-mode Verbs/uvp_post_modify_qp

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


user-mode Verbs/uvp_post_open_ca

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

user-mode Verbs/uvp_post_query_av

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

user-mode Verbs/uvp_post_query_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

user-mode Verbs/uvp_post_query_cq

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

user-mode Verbs/uvp_post_query_eec

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,


user-mode Verbs/uvp_post_query_mr

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


user-mode Verbs/uvp_post_query_mw

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 


user-mode Verbs/uvp_post_query_qp

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

user-mode Verbs/uvp_post_recv

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


user-mode Verbs/uvp_post_register_mr

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


user-mode Verbs/uvp_post_register_smr

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


user-mode Verbs/uvp_post_resize_cq

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


user-mode Verbs/uvp_post_send

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


user-mode Verbs/uvp_pre_allocate_pd

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

user-mode Verbs/uvp_pre_allocate_rdd

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

user-mode Verbs/uvp_pre_attach_mcast

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


user-mode Verbs/uvp_pre_close_ca

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

user-mode Verbs/uvp_pre_create_av

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

user-mode Verbs/uvp_pre_create_cq

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


user-mode Verbs/uvp_pre_create_eec

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


user-mode Verbs/uvp_pre_create_mw

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


user-mode Verbs/uvp_pre_create_qp

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

user-mode Verbs/uvp_pre_deallocate_pd

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

user-mode Verbs/uvp_pre_deallocate_rdd

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,

user-mode Verbs/uvp_pre_deregister_mr

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


user-mode Verbs/uvp_pre_destroy_av

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

user-mode Verbs/uvp_pre_destroy_cq

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


user-mode Verbs/uvp_pre_destroy_eec

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


user-mode Verbs/uvp_pre_destroy_mw

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


user-mode Verbs/uvp_pre_destroy_qp

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


user-mode Verbs/uvp_pre_detach_mcast

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


user-mode Verbs/uvp_pre_modify_av

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

user-mode Verbs/uvp_pre_modify_ca

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

user-mode Verbs/uvp_pre_modify_eec

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


user-mode Verbs/uvp_pre_modify_mr

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


user-mode Verbs/uvp_pre_modify_qp

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


user-mode Verbs/uvp_pre_open_ca

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

user-mode Verbs/uvp_pre_query_av

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

user-mode Verbs/uvp_pre_query_ca

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

user-mode Verbs/uvp_pre_query_cq

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


user-mode Verbs/uvp_pre_query_eec

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,


user-mode Verbs/uvp_pre_query_mr

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


user-mode Verbs/uvp_pre_query_mw

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 


user-mode Verbs/uvp_pre_query_qp

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

user-mode Verbs/uvp_pre_register_mr

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


user-mode Verbs/uvp_pre_register_smr

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


user-mode Verbs/uvp_pre_resize_cq

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