• Matan Barak's avatar
    IB/core: Add completion queue (cq) object actions · 9ee79fce
    Matan Barak authored
    Adding CQ ioctl actions:
    1. create_cq
    2. destroy_cq
    
    This requires adding the following:
    1. A specification describing the method
    	a. Handler
    	b. Attributes specification
    		Each attribute is one of the following:
    		a. PTR_IN - input data
    			    Note: This could be encoded inlined for
    				  data < 64bit
    		b. PTR_OUT - response data
    		c. IDR - idr based object
    		d. FD - fd based object
                    Blobs attributes (clauses a and b) contain their type,
    	        while objects specifications (clauses c and d)
                    contains the expected object type (for example, the
                    given id should be UVERBS_TYPE_PD) and the required
                    access (READ, WRITE, NEW or DESTROY). If a NEW is
                    required, the new object's id will be assigned to this
                    attribute. All attributes could get UA_FLAGS
                    attribute. Currently we support stating that an
    		attribute is mandatory or that the specification size
                    corresponds to a lower bound (and that this attribute
    		could be extended).
    		We currently add both default attributes and the two
    		generic UHW_IN and UHW_OUT driver specific attributes.
    2. Handler
       A handler gets a uverbs_attr_bundle. The handler developer uses
       uverbs_attr_get to fetch an attribute of a given id.
       Each of these attribute groups correspond to the specification
       group defined in the action (clauses 1.b and 1.c respectively).
       The indices of these arrays corresponds to the attribute ids
       declared in the specifications (clause 2).
    
       The handler is quite simple. It assumes the infrastructure fetched
       all objects and locked, created or destroyed them as required by
       the specification. Pointer (or blob) attributes were validated to
       match their required sizes. After the handler finished, the
       infrastructure commits or rollbacks the objects.
    Signed-off-by: default avatarMatan Barak <matanb@mellanox.com>
    Reviewed-by: default avatarYishai Hadas <yishaih@mellanox.com>
    Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
    9ee79fce
ib_user_ioctl_verbs.h 2.38 KB